{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Lecture 6: Introduction to Probability Theory (Part IV)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Objectives\n",
    "\n",
    "+ To introduce Bayesian parameter estimation.\n",
    "+ To introduce the concept of credible intervals.\n",
    "+ To introduce the decision making problem.\n",
    "+ To present some simple analytical examples Bayesian inference."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Readings\n",
    "\n",
    "+ These notes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "sns.set_context('talk')\n",
    "import numpy as np\n",
    "from graphviz import Digraph\n",
    "import scipy.stats as st"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Bayesian Parameter Estimation\n",
    "\n",
    "Assume that we have a model that predicts the result of a random variable $X$.\n",
    "The model has some parameters $\\theta$ which are to be determined from data which consist of $N$ independent measurements of $X$, i.e., the data are:\n",
    "$$\n",
    "x_{1:N} = (x_1,\\dots,x_N).\n",
    "$$\n",
    "We can write the model as:\n",
    "$$\n",
    "x_n|\\theta \\sim p(x_n|\\theta),\n",
    "$$\n",
    "where we started abusing the mathematical that requires us to use capital letters of random variables and lower case letters for data.\n",
    "But this is just simpler and this is the notation we will be following from now on.\n",
    "The term $p(x_n|\\theta)$ is known as the *likelihood* of this data point.\n",
    "The likelihood of the entire dataset $x_{1:N}$ is just the joint probability density of all observations, i.e., $p(x_{1:N}|\\theta)$.\n",
    "Because all observations are indpendent conditioned on the model parameters $\\theta$, we have:\n",
    "$$\n",
    "p(x_{1:N}|\\theta) = \\prod_{n=1}^Np(x_n|\\theta).\n",
    "$$\n",
    "Be careful. This factorization of the likelihood is not valid if the measurements are not independent.\n",
    "In that case, you need to keep the entire thing together (or factorize it in the way that it factorizes...)\n",
    "\n",
    "To close the loop, we need to say what we think about the pameters before we see any data.\n",
    "In Bayesian jargon, we need to specify our *prior state of knowledge*, or simple our *prior*:\n",
    "$$\n",
    "\\theta \\sim p(\\theta).\n",
    "$$\n",
    "How we do this is a big discussion.\n",
    "For now let's just say that we use common sense.\n",
    "\n",
    "The situation can be discribed graphical as:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.43.0 (0)\n",
       " -->\n",
       "<!-- Title: coin_toss_bayes_plate Pages: 1 -->\n",
       "<svg width=\"94pt\" height=\"154pt\"\n",
       " viewBox=\"0.00 0.00 94.00 154.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 150)\">\n",
       "<title>coin_toss_bayes_plate</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-150 90,-150 90,4 -4,4\"/>\n",
       "<g id=\"clust1\" class=\"cluster\">\n",
       "<title>cluster_0</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"8,-8 8,-82 78,-82 78,-8 8,-8\"/>\n",
       "<text text-anchor=\"middle\" x=\"43\" y=\"-14.8\" font-family=\"Times,serif\" font-size=\"14.00\">n=1,...,N</text>\n",
       "</g>\n",
       "<!-- theta -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>theta</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"43\" cy=\"-128\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"39.11\" y=\"-123.8\" font-family=\"Times,serif\" font-size=\"14.00\">θ</text>\n",
       "</g>\n",
       "<!-- xn -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>xn</title>\n",
       "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"43\" cy=\"-56\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"36\" y=\"-52.8\" font-family=\"Times,serif\" font-size=\"14.00\">x</text>\n",
       "<text text-anchor=\"start\" x=\"43\" y=\"-52.8\" font-family=\"Times,serif\" baseline-shift=\"sub\" font-size=\"14.00\">n</text>\n",
       "</g>\n",
       "<!-- theta&#45;&gt;xn -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>theta&#45;&gt;xn</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M43,-109.7C43,-101.98 43,-92.71 43,-84.11\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"46.5,-84.1 43,-74.1 39.5,-84.1 46.5,-84.1\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x1a2099ed10>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gcp = Digraph('coin_toss_bayes_plate')\n",
    "gcp.node('theta', label='<&theta;>')\n",
    "with gcp.subgraph(name='cluster_0') as sg:\n",
    "    sg.node('xn', label='<x<sub>n</sub>>', style='filled')\n",
    "    sg.attr(label='n=1,...,N')\n",
    "    sg.attr(labelloc='b')\n",
    "gcp.edge('theta', 'xn')\n",
    "gcp.render('coin_toss_bayes_plate', format='png')\n",
    "gcp"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We are now ready to apply Bayes' rule to find the posterior.\n",
    "Recall the Bayes' rule for propositions $A$ and $B$:\n",
    "$$\n",
    "p(A|B) = \\frac{p(AB)}{p(B)}.\n",
    "$$\n",
    "We set here\n",
    "$$\n",
    "A = \\text{the model parameters} = \\theta,\n",
    "$$\n",
    "and\n",
    "$$\n",
    "B = \\text{the data} = x_{1:N}.\n",
    "$$\n",
    "That is the question we ask is \"what is the probability of the model parameters given the data?\"\n",
    "Let's just blindly follow the rule:\n",
    "$$\n",
    "p(\\text{the model parameters}|\\text{the data}) = \\frac{p(\\text{the data and the parameters})}{p(\\text{the data})}.\n",
    "$$\n",
    "This $p(\\text{the model parameters}|\\text{the data})$ has a special name.\n",
    "It is our *posterior state of knowledge* about the model parameters or simply the *posterior*.\n",
    "\n",
    "We are ready to proceed.\n",
    "What is the joint probability of the data and the parameters?\n",
    "Well, we can use the Bayes rule again, but in this form:\n",
    "$$\n",
    "p(AB) = p(B|A)p(A).\n",
    "$$\n",
    "In our example:\n",
    "$$\n",
    "p(\\text{the data and the parameters}) = p(\\text{the data} | \\text{the parameters}) p(\\text{the parameters}).\n",
    "$$\n",
    "Putting it all together we get:\n",
    "$$\n",
    "\\text{posterior} = p(\\text{the model parameters}|\\text{the data}) = \n",
    "\\frac{p(\\text{the data} | \\text{the parameters}) p(\\text{the parameters})}{p(\\text{the data})}\n",
    "$$\n",
    "But we have given special names to the terms on the right:\n",
    "$$\n",
    "p(\\text{the data} | \\text{the parameters}) = p(x_{1:N}|\\theta) = \\text{likelihood},\n",
    "$$\n",
    "and\n",
    "$$\n",
    "p(\\text{the parameters}) = p(\\theta) = \\text{prior}.\n",
    "$$\n",
    "So, we can now write the mnemonic (ignoring the normalization constant):\n",
    "$$\n",
    "\\text{posterior} \\propto \\text{likelihood}\\times\\text{prior}.\n",
    "$$\n",
    "Tracking back our symbols, this can be written mathematically as:\n",
    "$$\n",
    "p(\\theta | x_{1:N}) \\propto p(x_{1:N}|\\theta)p(\\theta).\n",
    "$$\n",
    "*The posterior is everything a Bayesian has to say about the parameter estimation problem.*\n",
    "Let's see it in practice."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example: Inferring the probability of a coin toss from data\n",
    "\n",
    "A coin with unknown probability of heads $\\theta$ is tossed $N$ times independently and you observe the result:\n",
    "$$\n",
    "x_{1:N} := (x_1,\\dots,x_N).\n",
    "$$\n",
    "Assume that we have coded the result so that heads corresponds to a \"0\" and tails to a \"1.\"\n",
    "Our goal is to estimate the probability of heads $\\theta$ from this dataset.\n",
    "\n",
    "Assuming that we know nothing, we set:\n",
    "$$\n",
    "\\theta \\sim U([0,1]).\n",
    "$$\n",
    "In terms of probability densities this:\n",
    "$$\n",
    "p(\\theta) = \n",
    "\\begin{cases}\n",
    "1,&\\;\\text{if}\\;\\theta\\in [0,1],\\\\\n",
    "0,&\\;\\text{otherwise}\n",
    "\\end{cases} =\n",
    "1_{[0,1]}(\\theta),\n",
    "$$\n",
    "where we used the indicator function to simplify the notation.\n",
    "\n",
    "Now, let's write down the likelihood of the data.\n",
    "Because of the independence assumption, we have:\n",
    "$$\n",
    "p(x_{1:N}|\\theta) = \\prod_{n=1}^Np(x_n|\\theta).\n",
    "$$\n",
    "Then, each measurement is a Bernoulli with probability of success $\\theta$, i.e.,\n",
    "$$\n",
    "x_n | \\theta \\sim \\operatorname{Bernoulli}(\\theta).\n",
    "$$\n",
    "In terms of probability densities, we have:\n",
    "$$\n",
    "p(x_n|\\theta)\n",
    "= \\begin{cases}\n",
    "\\theta,&\\;\\text{if}\\;x_n=0,\\\\\n",
    "1-\\theta,&\\;\\text{otherwise}.\n",
    "\\end{cases}\n",
    "$$\n",
    "Using a common mathematical trick, we can rewrite this as:\n",
    "$$\n",
    "p(x_n|\\theta) = \\theta^{x_n}(1-\\theta)^{1-x_n}.\n",
    "$$\n",
    "Work out the cases $x_n=0$ and $x_n=1$ to convience yourself.\n",
    "\n",
    "Now we can find the expression for the likelihood of the entire dataset.\n",
    "It is\n",
    "$$\n",
    "\\begin{split}\n",
    "p(x_{1:N}|\\theta) &=& \\prod_{n=1}^Np(x_n|\\theta)\\\\\n",
    "&=& \\prod_{n=1}^N\\theta^{x_n}(1-\\theta)^{1-x_n}\\\\\n",
    "&=& \\theta^{\\sum_{n=1}^Nx_n}(1-\\theta)^{N-\\sum_{n=1}^N}.\n",
    "\\end{split}\n",
    "$$\n",
    "This has the intuitive meaning that it is the probability of getting $\\sum_{n=1}^Nx_n$ heads and the rest $N-\\sum_{n=1}^Nx_n$ tails.\n",
    "\n",
    "We can now find the posterior.\n",
    "It is:\n",
    "$$\n",
    "\\text{posterior} \\propto \\text{likelihood}\\times\\text{prior}.\n",
    "$$\n",
    "In our problem:\n",
    "$$\n",
    "\\begin{split}\n",
    "p(\\theta|x_{1:N}) &\\propto& p(x_{1:N}|\\theta)p(\\theta)\\\\\n",
    "&=& \\theta^{\\sum_{n=1}^Nx_n}(1-\\theta)^{N-\\sum_{n=1}^N} 1_{[0,1]}(\\theta)\\\\\n",
    "&=& \\begin{cases}\n",
    "\\theta^{\\sum_{n=1}^Nx_n}(1-\\theta)^{N-\\sum_{n=1}^N},&\\;\\text{if}\\;\\theta\\in[0,1]\\\\\n",
    "0,&\\;\\text{otherwise}.\n",
    "\\end{cases}\n",
    "\\end{split}\n",
    "$$\n",
    "And this is just the density corresponding to a [Beta distribution](https://en.wikipedia.org/wiki/Beta_distribution):\n",
    "$$\n",
    "p(\\theta|x_{1:N}) = \\operatorname{Beta}\\left(\\theta\\middle|1 + \\sum_{n=1}^Nx_n, 1 + N - \\sum_{n=1}^Nx_n\\right).\n",
    "$$\n",
    "Let's try this out with some fake data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1a21093390>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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jTH069ePuLg4br/9dl588UXi4irWCZyamsr999/Pddddx/Tp0/P2Dxo0iPbt2/PEE08US4YqANa/B1/cb7fbDoAxH/i3g98X1arDFe/Af/pBejLMugEmfF6lhzZrS8YBx9K9364pKvWkb8cHw6hR5Z98tnDhQqpVq8aVV15JdnZ23qNXr17Ur1+f5cuXez1/woQJbN68mTVr1uTtmz59Oj179qR79+55+37//XeuvfZaWrRoQVRUFFFRUfz5z38mOzubbdu81Kkqo5UrV3L8+HGuvfbaQt8jJiaGfv36lfo9lB9s/BTm3Wm3W/eDq2c4l2DcElrAqDfs9p41sOwZZ+NxmLZkHFA7xre/auJrht5fQRUZaZaUlER2dja1a9f2+P7hw4e9nj9q1CgSEhKYNm0aZ599Ntu3b+fbb79l6tSpecccPXqU8847j/r16/P444/Tvn17oqOjWblyJXfffTfp6RW/BZmUlATA0KFDPb4fExO8YehV0h+LbSc/BpqdBVd/BFEh8t/8tCFw7l12aPP/pkL3q6BBR6ejcoQmGQcM6tKIR+dvKtMtswiBQZ0bBT4oH3maWxMdHU1GRkax/UWTRv369alevTorV670WMk6Pt77kj7R0dFcddVVzJgxg5deeonp06cTFRXFNddck3fMokWLOHz4MJ9//jm9e/fO21+w9ePt84Fi38XT9wB46623OOOMM4p9jlbpDqADP8Mn19tO/kbd4NpZtqhlKBnwd/h1LhzdCQvutv1EVbDuof4rcECzhBiGdi1bp+TQro2DOjGzIlq3bs2+fftITk7O25eens7XXxceZTNs2DAyMzM5cuQIZ511VrFHhw4dSr3WhAkTSElJYc6cObz33nuMGDGCevXq5b3vToLVq1fP25ebm8t///vfMn0PgA0bNhTaP2/evEKv+/fvT2xsLFu2bPH4Pc4888xSr6XKIXWfncmfdQLiW8C1n0JMHaejKi4qBi529Vvu+hZ+nuFsPA7RloxDHr2sK5v2H/M6jLll3Zo8dlm3IEZVMVdffTVPPPEEY8aM4Z577uH48eO89NJLxVo9Q4YMYezYsYwdO5a77rqLvn37Ur16dfbu3cvSpUu54oorGDFiRAlXsfr27UvHjh2577772Lt3Ly+/XHgpon79+lGrVi1uuukmJk2aRE5ODq+++irHjh0r9Xuce+65tGnT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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Take a fake coin which is a little bit biased\n",
    "theta_true = 0.8\n",
    "# This is the random variable corresponding to a coin toss\n",
    "X = st.bernoulli(theta_true)\n",
    "\n",
    "# Sample from it a number of times to generate our data = (x1, ..., xN)\n",
    "N = 5\n",
    "data = X.rvs(size=N)\n",
    "# Now we are ready to calculate the posterior which the Beta we have above\n",
    "alpha = 1.0 + data.sum()\n",
    "beta = 1.0 + N - data.sum()\n",
    "Theta_post = st.beta(alpha, beta)\n",
    "# Now we can plot the posterior PDF for theta\n",
    "fig, ax = plt.subplots()\n",
    "thetas = np.linspace(0, 1, 100)\n",
    "ax.plot([theta_true], [0.0], 'o', markeredgewidth=2, markersize=10, label='True value')\n",
    "ax.plot(thetas, Theta_post.pdf(thetas), label=r'$p(\\theta|x_{1:N})$')\n",
    "ax.set_xlabel(r'$\\theta$')\n",
    "ax.set_ylabel('Probability density')\n",
    "ax.set_title('$N={0:d}$'.format(N))\n",
    "plt.legend(loc='best')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Questions\n",
    "\n",
    "+ Try $N=0,5,10,100$ and see what happens."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Credible Intervals\n",
    "\n",
    "The posterior $p(\\theta|x_{1:N})$ captures everything that we have to say about $\\theta$.\n",
    "Credible intervals are a way to summarize it.\n",
    "A credible interval is basically an interval inside which the parameter $\\theta$ lies with high probability.\n",
    "Specifically, a 95\\% credible interval $(\\ell, u)$ (for lower and upper bounds) for $\\theta$ is such that:\n",
    "$$\n",
    "p(\\ell \\le \\theta \\le u|x_{1:N}) = 0.95.\n",
    "$$\n",
    "Of course, there is not a unique credible interval.\n",
    "You can move $(\\ell, u)$ to the left or to the right in a way that keeps the probability contained in it at 0.95.\n",
    "\n",
    "The *central credible interval* is particularly common.\n",
    "It is defined by solving the following problems\n",
    "$$\n",
    "p(\\theta \\le \\ell | x_{1:N}) = 0.025,\n",
    "$$\n",
    "and\n",
    "$$\n",
    "p(\\theta \\le u | x_{1:N}) = 0.975,\n",
    "$$\n",
    "for $\\ell$ and $u$, respectively.\n",
    "Here is how you can do it for the coin toss example above since you have the posterior analytically:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Theta is in [0.36, 0.96] with 95% probability\n"
     ]
    }
   ],
   "source": [
    "theta_low = Theta_post.ppf(0.025)\n",
    "theta_up = Theta_post.ppf(0.975)\n",
    "print('Theta is in [{0:1.2f}, {1:1.2f}] with 95% probability'.format(theta_low, theta_up))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1a21218490>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Here is a visualization of this credible interval:\n",
    "fig, ax = plt.subplots()\n",
    "ax.plot([theta_true], [0.0], 'o', markeredgewidth=2, markersize=10, label='True value')\n",
    "ax.plot(thetas, Theta_post.pdf(thetas), label=r'$p(\\theta|x_{1:N})$')\n",
    "thetas_int = np.linspace(theta_low, theta_up, 100)\n",
    "ax.fill_between(thetas_int, np.zeros(thetas_int.shape), Theta_post.pdf(thetas_int), color='red', alpha=0.25)\n",
    "ax.plot([theta_low, theta_up], np.zeros((2,)), 'x', color='red', markeredgewidth=2, label='95% central CI')\n",
    "ax.set_xlabel(r'$\\theta$')\n",
    "ax.set_title('$N={0:d}$'.format(N))\n",
    "plt.legend(loc='best')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "So, is there another 95\\% credible interval?\n",
    "Yes there is. You can find it by solving thes problem:\n",
    "$$\n",
    "p(\\theta \\le \\ell | x_{1:N}) = 0.01,\n",
    "$$\n",
    "and\n",
    "$$\n",
    "p(\\theta \\le u | x_{1:N}) = 0.96,\n",
    "$$\n",
    "for $\\ell$ and $u$, respectively.\n",
    "Here is what you will find for the coin toss example."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Theta is in [0.29, 0.94] with 95% probability\n"
     ]
    }
   ],
   "source": [
    "theta_low_o = Theta_post.ppf(0.01)\n",
    "theta_up_o = Theta_post.ppf(0.96)\n",
    "print('Theta is in [{0:1.2f}, {1:1.2f}] with 95% probability'.format(theta_low_o, theta_up_o))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And here is how it compares to the previous one:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1a213ffd90>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "ax.plot([theta_true], [0.0], 'o', markeredgewidth=2, markersize=10, label='True value')\n",
    "ax.plot(thetas, Theta_post.pdf(thetas), label=r'$p(\\theta|x_{1:N})$')\n",
    "thetas_int = np.linspace(theta_low, theta_up, 100)\n",
    "ax.fill_between(thetas_int, np.zeros(thetas_int.shape), Theta_post.pdf(thetas_int), color='red', alpha=0.25)\n",
    "ax.plot([theta_low, theta_up], np.zeros((2,)), 'x', color='red', markeredgewidth=2, label='95% central CI')\n",
    "thetas_int_o = np.linspace(theta_low_o, theta_up_o, 100)\n",
    "ax.fill_between(thetas_int_o, np.zeros(thetas_int_o.shape), Theta_post.pdf(thetas_int_o), color='blue', alpha=0.25)\n",
    "ax.plot([theta_low_o, theta_up_o], np.zeros((2,)), '+', color='blue', markeredgewidth=2, label='Other 95% CI')\n",
    "ax.set_xlabel(r'$\\theta$')\n",
    "ax.set_title('$N={0:d}$'.format(N))\n",
    "plt.legend(loc='best')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Getting Credible Intervals when the Posterior is not Analytically Available\n",
    "Of course many times you do not have the posterior in analytical form and you have to estimate the credible intervals via sampling.\n",
    "We will learn about this in a later lecture."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Questions\n",
    "+ Find the credible interval for $\\theta$ conditioned on the data with 99\\% accuracy.\n",
    "+ How many coin tosses do you have to do, in order to estimate $\\theta$ within an accuracy of $1\\%$ with $99\\%$ probability? Do not try to do this analytically. Just experiment with different values of $N$ for this synthetic example. Getting a number $N$ that works for all possible datasets (assuming that the model is correct), is an interesting problem but it is not trivial."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Bayesian Decision Making\n",
    "\n",
    "So, we learned about credible intervals.\n",
    "But what if someone asks you to report a single value for $\\theta$ in the coin toss example?\n",
    "What is the correct way of doing this?\n",
    "\n",
    "This is actually a decision-making problem.\n",
    "To answer it, you have to quantify the cost of making a mistake and then make a decision that minimizes this cost.\n",
    "To formalize this concept, assume that we have a random variable $X$ and we have to guess a value for it.\n",
    "Let $\\ell(\\theta', \\theta)$ be the loss we incur when we guess $\\theta'$ and the true value is $\\theta$.\n",
    "This is a completly subjective quantity.\n",
    "However, here are some ideas:\n",
    "+ The 0-1 loss:\n",
    "$$\n",
    "\\ell_{01}(\\theta',\\theta) = \\begin{cases}\n",
    "1,&\\;\\text{if}\\;\\theta'=\\theta\\\\\n",
    "0,&\\;\\text{if}\\;\\theta'\\not=\\theta.\n",
    "\\end{cases}\n",
    "= 1_{\\{\\theta'\\}}(\\theta).\n",
    "$$\n",
    "+ The square loss:\n",
    "$$\n",
    "\\ell_2(\\theta',\\theta) = (\\theta'-\\theta)^2.\n",
    "$$\n",
    "+ The absolute loss:\n",
    "$$\n",
    "\\ell_1(\\theta',\\theta) = |\\theta'-\\theta|.\n",
    "$$\n",
    "\n",
    "The rational thing to do, when choosing a value for $\\theta$ is to minimize our *expected loss* where the expectation is taken over our posterior state of knowledge about $\\theta$.\n",
    "That is, we make our choice by solving this problem:\n",
    "$$\n",
    "\\theta^* = \\min_{\\theta'} \\mathbb{E}[\\ell(\\theta',\\theta)|x_{1:N}] = \\min_{\\theta'} \\int \\ell(\\theta',\\theta)p(\\theta|x_{1:N})d\\theta.\n",
    "$$\n",
    "This, in general, is not a problem with an analytical solution.\n",
    "However, for the two special loss functions above the answer is:\n",
    "+ The choice that minimizes the 0-1 loss is the one maximizing the posterior:\n",
    "$$\n",
    "\\theta^*_{01} = \\arg\\max_{\\theta} p(\\theta|x_{1:N}).\n",
    "$$\n",
    "+ The choice that minimizes the square loss is the expectation of the random variable:\n",
    "$$\n",
    "\\theta^*_2 = \\mathbb{E}[\\theta|x_{1:N}] = \\int \\theta p(\\theta|x_{1:N})d\\theta.\n",
    "$$\n",
    "+ The choice that minimizes the absolute loss is the median:\n",
    "$$\n",
    "p(\\theta \\le \\theta^*_1 | x_{1:N}) = 0.5.\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's find the first two for the first two lost function.\n",
    "For the 0-1 loss, we just need to find the maximum of the posterior.\n",
    "This is an optimization probem with an analytical solution, but we are not goint to find it...\n",
    "We will just solve the problem using with a grid search:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "theta_star_01 = 0.80\n"
     ]
    }
   ],
   "source": [
    "idx = np.argmax(Theta_post.pdf(thetas))\n",
    "theta_star_01 = thetas[idx]\n",
    "print('theta_star_01 = {0:1.2f}'.format(theta_star_01))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, let's the theta $\\theta$ that minimizes the square loss.\n",
    "We just have to find the expectation of the posterior $p(\\theta|x_{1:N})$ (which is just a Beta).\n",
    "It is:\n",
    "$$\n",
    "\\theta^*_N = \\mathbb{E}[\\theta|x_{1:N}] = \\frac{1+\\sum_{n=1}^Nx_n}{1+\\sum_{n=1}^Nx_n + N + 1 - \\sum_{n=1}^Nx_n}\n",
    "= \\frac{1 + \\sum_{n=1}^Nx_n}{N+2}.\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "theta_star_2 = 0.71\n"
     ]
    }
   ],
   "source": [
    "# In the example we had above:\n",
    "theta_star_2 = Theta_post.expect()\n",
    "print('theta_star_2 = {0:1.2f}'.format(theta_star_2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And finally, here is the median which minimizes the absolute loss:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "theta_star_1 = 0.74\n"
     ]
    }
   ],
   "source": [
    "# In the example we had above:\n",
    "theta_star_1 = Theta_post.median()\n",
    "print('theta_star_1 = {0:1.2f}'.format(theta_star_1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "See them all together in the same plot:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1a215daf50>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEtCAYAAADqcgyMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd3hUZdr48e+TRiYJKYQSDNKjdCKyaBAElSIISlGxIEVFXcsPX9eyawMLrisW0H3RF3UFdQUFYRFEDYIBXBUpCoIgvZNQQhokIeX5/fHMhJRJMpNk5kyS+3Ndc83JmXPm3AeSuefpSmuNEEKI+s3P6gCEEEJYT5KBEEIISQZCCCEkGQghhECSgRBCCCQZCCGEQJKBEEIIJBkIgVIqXClVqJTSSql3yjlmp1LqoBdi0eU8sjx9bVG/BVgdgBA+oAeggAJgpFLqfq11oeNFpVRDoD3whZfiWQvMLrUvz0vXFvWUJAMhTDIA+DcwDugDrCn1ugI2eimevVrrj710LSEAqSYSAuBS+/NzmG/go0u97kgWm7wVkFIqSCkV5q3rCaFkbiJR3ymltgM2rXVrpdRXQBegpbb/cSilPgZuB5prrZNLnesHNHLjcqnFq6CcxKKBM0Aw4A+cAD4FntZap7txHSHcItVEol6zf/u+CFhi37UIuBboBayz77sUOFY6Edi1BPa5cck2wP4KXv8ZWADsBsKBocCDQD+lVG+ttTQkC4+QZCDqu3hMdamjCug/wNuYqqJ1SqlQTLJYXs75ycBAN67nLKEU0VpfVmrXh0qpLcA0YLL9WYgaJ8lA1HeO9oJNAFrrE0qptZhk8DhwCSWTRQla6xzgWw/HOB2YAlyHJAPhIZIMRH3nrHH4c+AtpVQ855OF055ESil/oIkb1zuhtS5wJ0CtdZ5S6ijQ2J3zhHCHJANR3zlrD1gMvIkpHbS07yuvJ9GF1GybQRlKqWCgBfCTO+cJ4Q5JBqLeUkrZgA7A18X3a62PKKXWYZJBIXBca324nLepsTYDpVS01vqUk5dewPytLnXjOkK4RZKBqM/iMd03nX3r/xxTV6+Bb8p7gxpuM3haKXU58B1wEAjD9Ca6CtOz6a0auo4QZUgyEPVZRYPJHMlAlfO6JyQBnYDxQDRmeoxdwFPA6/bEI4RHyKAzIYQQMh2FEEIISQZCCCGQZCCEEAJJBkIIIailvYmUUvmYRJZhdSxCCFGLhAOFWusyn/21sjeRUqoQUBEREVaHIoQQtUZ6ejqA1lqXqRWqtGSglLoGuANIwAy9T8VMsztFa/1bJedOxUywVVqK1jqm0sjLlxERERGRlpZWjbcQQoj6JTIykvT0dKc1Kq5UE92HGQDzBrAdaIaZzXG9Uqq/1tqV+VIGAsXnYT/nwjlCCCG8xJVk8IDW+njxHUqpRMzkXI9RdolAZzZoreVrvBBC+KhKexOVTgT2fWmYYfItPBGUEEII76pS11KlVBPMOrFbXTxlu1KqQCl1TCn1rlKqaSXvn1bRA5CWYyGEqEFudy1VSilgNiaRvFrJ4XuAJ4FfMO0EV2DaG65RSl2qtT7t7vWFEELUvKqMM5gOjAAmaq23V3Sg1vqjUrtWKaV+AhKBB4AXyzkvsqL3dbV0cObMGTIyMsjPz6ewsLCyw4Uo4ufnR3BwMI0bN8Z8/xGibnMrGSilpgF/ASZrredU5YJa6xVKqWOYrqoeUVhYyNGjR8nMzMTPz4/AwED8/f09dTlRB+Xl5ZGVlUVubi6xsbGSEHzJuTOQug9S90J+DgRHmEdEC/MQVeJyMlBKPY+p8nlca/1mNa/rh1lByiPS09PJzMykcePGREdH4+cns24I96WmppKSksLJkydp0sSdZY5FjdIajmyC7Utg+zJI3VP+sdHtof0AuOhaaNsfJIm7zKVkoJSaAjwDPKO1nl6dCyqlBmHGKnhsPdesrCyCgoKkiC+qpVGjRqSlpZGTI2vKWKIgD379BL5/A047WWY6MAQaNIScDMjPNvtO7TaPde/ABZfA1U9Du2skKbjAlRHIfwGmAsuAb+3L8jnkaq1/sR+XBPTTWqti5/4CfAj8AeQBvYFHgd3A/9bMLZRVWFhIQECAJAJRbf7+/tLe5G2FBfDrv2HNdEg7eH5/kw7Q8XrzjT+6PYQ1Pf8hn58LyVthz0rYlQiH18PRX+Dj0dAyAa7/JzRub8Xd1BqulAyG25+H2R/FHQBaV3DuDuB+4AIgEDgEvAe8IIPQhBBlnNgJXzwIh9aZn5UfdBsDvf8fNOtU/nkBDaDFpebR73E4uA6+exH2rYGDP8Ls/nDDW9B5pFduozaqNBlorfu78kbOjtNa3+p+SEKIeqewAH54C757CQpyzb5uY6DfExDdzv33a3kZjF8Ke1bBf+6HzGOwYAIc/AkGvQj+gTUafl0gLatCCGtln4ZPxsC3U0wiiGgJd/wHRs2uWiIort3VcO9aaNPP/LzuHfj8bijIr37cdUytXM/AKkfSsvn29xQysvMItwUysFMzLoi0ee36rraB7Nu3j9atW3s2GAtcfvnlREZG8vXXX1sdiqgpx7fDvFvPNxD3vBMGvgANwmruGmFN4I7FsPI5+O9M+P0/4B8EI98BP+ly7iDJwAXHM3OYsmQb32xLprDY8g/PLd3G4M4xPHdDZ5o2DPZ4HD/++GOJn5944gl27tzJ4sWLS+xv3ry5x2MRotp2fQufjYO8M+DfAK5/E7rf4plr+fnDgOfALwDWvga/fWbaGYa/CdL1HJBkUKnjmTnc+PaPHEw9W+a1Qg1fbU1m29EMPv9zb5o0bODRWC6//PISP0dFRdGgQYMy+8uTm5tLgwaejVEIl2z9HBbdA4X5EN4CbvnYdAX1JKXg6mdMz6Mf/wm/fAQNY0z3UyFtBpWZsmSb00RQ3MHUszy7xNU5+7zjnXfeQSlFUlISt9xyC1FRUcTHxwNwyy230KFDhzLn/PWvfyU4uGQJp6CggOnTp9O5c2eCg4Np0qQJEydO5MSJExVe/+9//zsBAQEcPXq0zGtjx46ladOm5OXlAfDxxx9zzTXX0KxZM0JCQujSpQsvv/xy0euV3WNycnKJ/V9//TVKKX76qeRQliVLltCnTx/CwsIICwtj0KBB/PLLLxVeQ3jAhg9g4V0mETTtDJNWej4ROChlGpAvnWh+XjPdlFCEJIOKHEnL5pttyZUfCHyzLZmjadkejsh9d9xxB7GxsXz22WdMn+7+eMHbb7+dKVOmcOONN7J06VL+8Y9/8M0333D11VdXOBhr3LhxaK356KOS01NlZmayePFibr/9dgIDTY+O3bt3M3LkSObOncuXX37JXXfdxfTp07n//vvdjrc8b7/9NiNGjKBdu3bMnz+fjz76iMzMTK688kr++OOPGruOqMS6/4NlDwMaWvwJJiwz3869SSkY8oq5PsCiSZB+2Lsx+CCpJqrAt7+nlGgjqEihhm+3pzAuobVHY3LXiBEjeO2116p07qpVq/j00095//33ufPOO4v2d+7cmcsvv5x///vf3HXXXU7PjY2NZcCAAcydO5cnnniiaP9nn33G2bNnmThxYtG+qVOnFm1rrenbty9hYWHcf//9vPHGG4SFVa8xMT09nccff5w77riDuXPnFu0fMGAA7du358UXXyyTtIQHbPoIvnrcbLftD2P+XbMNxe4ICIIbP4D/6wvZqbDwTpjwZb3uciolgwpkZFdcTVFa+ln3jveGkSOrPshm+fLlBAQEcNNNN5Gfn1/0uPTSS2ncuDGrV6+u8PwJEyawfft21q1bV7Rv7ty5XHLJJXTr1q1o3x9//MHYsWO58MILCQwMJDAwkHvuuYf8/Hz27KlgHhoXrV27lqysLMaOHVviPmw2G3379q30PkQN2Po5fPGQ2W7dF26db10icIi8EEbONtuH1kHSy9bGYzEpGVQg3Obet4SIEN/7VlGdnkUpKSnk5+cTHh7u9PWTJ09WeP7IkSOJjIxkzpw5XHbZZezdu5fvv/+emTNnFh1z+vRp+vTpQ+PGjXnhhRdo3749wcHBrF27lkceeYTs7OpXvaWkpAAwePBgp6/bbN7rHlwv7VphGovRENsTbp0HgT7yb37RILhisuly+t+Z0O1maHKx1VFZQpJBBQZ0asZzS7e5VFXkp2BAx2aeD8pNzsYmBAcHk5ubW2Z/6Q/3xo0bExQUxNq1a53O/BoRUfGSEsHBwdx8883Mnz+fGTNmMHfuXAIDA7ntttuKjklMTOTkyZN8+eWX9OrVq2h/8dJERe8PlLkXZ/cB8N5779G9e/cy7yOz2nrQsc3w2XjTWNysC4xdaCaX8yX9/wa/L4HT+2HZI6Ydox7OayZ/BRWIjbQxuLNrjVuDO8d4dQBadbRu3ZojR46QmppatC87O5tvvy3Zq2LIkCGcO3eOU6dO0bNnzzKPuLi4Sq81YcIE0tLSWLx4MR999BHDhw8nOjq66HVHsgoKCiraV1hYyL/+9S+X7gNgy5YtJfZ/8cUXJX6+8sorCQ0NZefOnU7vo0ePHpVeS1RB+hEzsjjvDERcCGM/B1uU1VGVFWiDofZ2tQPfw+b51sZjESkZVOK5Gzqz7WhGhd1LWzYK4fkbungxquq59dZbefHFFxkzZgx/+ctfyMrKYsaMGWVKEYMGDeKWW27hlltuYfLkySQkJBAUFMThw4dZtWoVN954I8OHDy/nKkZCQgIXX3wxjz32GIcPH+bNN0suhdG3b18aNmzI3XffzZQpUygoKGDWrFlkZGRUeh9XXHEFbdq0YfLkyWRnZ9OwYUMWLFjAhg0bShwXFRXFq6++ygMPPMDx48e5/vrradSoESkpKaxbt46IiAieffZZF//1hEtyM00iyDwGDcLh9gXe7zXkjrgB0GmEGZ2c+DRcNBhCGlkdlVdJyaASTRsGs/DPCQzpEoNfqZKjn4IhXWK8MuCsJl188cUsXryY48ePM3LkSP72t78xbtw4xowZU+bYf//730ybNo1ly5YxatQoRowYwcsvv4zNZqNTpwpmkSxmwoQJHD58mGbNmnHttdeWeK158+Z88cUXKKUYM2YMDzzwAPHx8bz6amXLa0NgYCBffvklbdu25e6772bChAlERUXx+uuvlzn2vvvuY/ny5Rw+fJiJEycyePBgHn/8cQ4ePEjfvn1dug/hosJC+HwSpPxmRvze/CE07Wh1VJW79u8QFAZnT8J306yOxuuU1i72nfQhSqm0iIiIiLQ057NgHzhwAIBWrVrV6HWPpmXz7fYU0s/mERESyICO3p2bSHifp36X6rSklyHp72Z7+Ey4dIKl4bjlh39C4lPgFwgPbYSouvX/HhkZSXp6erqzdealmsgNF0TafG4cgRA+5Y+vzyeCnnfVrkQA8Ke74cf/hcyjsOYVuMFja3D5HKkmEkLUjJO7zWhegAsvg2trYb/9wGC48lGz/es8OFX9cS61hSQDIUT15WWbGUhzMyAsxrQTBARVfp4vuuQOiGwJugBW/8PqaLxGkoEQovq+egKObwPlDzfP9e2eQ5UJCIIr7dNmbPkMTtSPuaskGQghque3hbDJPufTNc9CS9emVPdp3W+FRm0BXW9KB5IMhBBVd2oPLJ1sttsPNAvX1wX+AedLB9v+Uy9mNZVkIISomvxzsHAinMuChs3ty0jWoY+ULqMhrJlpO/j5Xauj8bg69D8nhPCqpJfM3EMoGP0ehDa2OqKaFRBkupoCbJwD585YGo6nSTIQQrhv/3/h+xlmu8//QOs+1sbjKZdONOsz56TBlk+tjsajJBkIIdyTnQaL7wU0NI83s37WVWFNoOtNZvunt81UG3WUJAMhhHuWPwbphyDABqPerb3jCVx1+X3m+eRO2LvK2lg8SJKBEMJ1v38Bv31mtge/CE0usjYeb4jpalZnA/jpHWtj8SBJBvXAs88+S8+ePcvsP336NJMnTyY2NhabzUafPn3KrA0AZt2A4usU+5K5c+fSokULzp4tf4pxUUPOnIRl/2O2211t5h6qL3rdY573rISMo9bG4iGVJgOl1DVKqTlKqT+UUmeVUoeVUouUUl1duYBSqp1S6j9KqXSlVKZSarlSyrW5j0W1HTp0iFdffZUXXnihxP6UlBQSEhLYtGkTs2bNYsGCBaSmpjJs2DBycnIsitZ9Y8eOJTQ0lFdeecXqUOq+L/9ipnduEA7Xv1W/VgO76FoIiQZdWGcXv3GlZHAf0BJ4AxgCPGL/eb1SqsKhhkqppsBaoDUwHrgVaASsVkq1qHrYwlUzZ86kefPmDBkypMT+cePGERoaysqVK7nhhhsYNmwYr7/+OocOHWLVqtpTL+rv78+9997Lm2++WSPrJYtybP3cLPwCZgK6iHr25xsQBN3s6338+gnUwqn/K+NKMnhAa3211vodrfVqrfVnwAAgG3isknMfBaKAoVrr/2itlwHXAQ2Ap6oTeH03aNAgrrzySv75z3/SpUsXgoODad26dYlFYc6dO8cHH3zA7bffXuLcxMREEhMTeeONN0osN9mmTRsA9u3bV+G1jxw5QkhICBMnTiyx/+OPP8bPz6/EgvfecNttt5GWlsZnn33m1evWG1kn4Ev7TJ4XXQvxt1V8fF3luO9Tu+DwhoqPrYUqXc9Aa33cyb40pdQuoLKvByOBFVrroko2rfUppdRSYBTwZzfjrZ6CfMg44tVLVig81gx7r4KNGzdy7tw5zpw5wzPPPENkZCRvvfUWjz32GBdffDHDhw9n3bp1pKam0q9fvxLnzp49m/bt29O7d2/y8/OL9juWmiyeIJyJjY3lkUce4eWXX+bxxx+nY8eOfPHFF0ycOJGpU6cyefLkKt1TVcXExNChQweWL1/O+PHjvXrteuHrJyA7FYIjYNiM+lU9VFxMV/NI/g1+/Tdc+CerI6pRVfokUko1AboA8yo4xga0AxY4eXkLcJtSqqmzZOMxGUdgZjevXa5Sk7dUaSWlvXv3kpqaSseOHVm7di0hISGAWRM4JiaGJUuWMHz4cH788UcALrnkkqJz8/PzSUxMJDMzk8DAQKfv7yghVOSJJ57g3Xff5amnnuKhhx5izJgxPPTQQyXWEp4yZQoLFixgx44dfPLJJ9xyyy1u3efu3buJi4vjjjvu4MMPPyza37p1az7++GP69Dk/0KlHjx4kJSW59f7CBTuWmyoigMEvQXhza+OxWvzt8PVfYesis0xmYN1Z6dDt3kTKrJo+235uRQvVRgEKSHXymmNfdDnXSKvoAUS4G3ddsnHjRgCef/75okQAEBYWxoUXXsipU6cAOHr0KP7+/kRFRRUds337djIzM5k2bRrr168v8Rg1ahR+fn5Oex6V1rBhQ6ZOncrixYsZNmwYt99+O6+99lqJY+Li4pg5cya9evWq0n1u2bKFtm3b8tVXX1FQUABAeno6Bw8epFu3kkm9adOmJCcnU1iHBwV5XXYafPmI2W7b33wQ1nddbzLrOuemw44vrY6mRlWlZDAdGAFM1Fpvd+H4ilpavNsKEx5rvo37ivDYKp22YcMGgoODueGGG0rs11qTnJzMwIEDAcjOzqZBgwaoYsX6/fv3A5CQkFDmQ3/z5s0kJCQQGVlmeVSnOnToAEBISAjvvPNOieuA6ekDMG1a1RYX37x5MwMGDGDTpk38+OOPRV1fW7duTXh4eIljg4ODKSgo4Ny5cwQHB1fpeqKUFc9C5jEIDDFrGdfX6qHiQhubdpMdy0xVUdcbrY6oxriVDJRS04C/AJO11nMqOfw05sPe2bf/RvZnZ6UGnC3WXCqOqpUO/APqxALXGzZsoEmTJmWqeb766ivS0tK47rrrAGjcuDFnz54lNzeXBg0aABS1EZQ+NykpiT179vDMM8+4FMOmTZsYMWIEV1xxBf/973+ZN28ed9xxh9v3cv/99wMwa9asMq9t3ryZQYMGERsby9KlS4uSQelSAUBqaiqhoaGSCGrK/u9LrlEQ1drScHxK/G0mGexNMmMv6sgEfS5XEymlngeeBB7XWr9Z2fFa62xgL6ZtobSuwAmvthfUIZs2bSIlJaWowRcgNzeXp556ip49ezJo0CAAOnbsCMCePefXcW3bti0A27ZtK3Huo48+Snx8fNG3+Yps376dwYMHc/XVV7N69WquuuoqnnrqqSqNT5g1a5bTRAAUffAPHz6cL774AjAJonv37mWO3bt3L507d3b7+sKJ/FxY+rDZjr30/IArYbS7BoIamjEHO5ZZHU2NcSkZKKWmAM8Az2itp7vx/ouBgUqpojXwlFKNgOHAIncCFcbu3btJS0sjJiaGMWPGkJiYyKJFi7jmmms4dOgQ8+bNK6qu6d+/PwA//fRT0fndu3cnPj6eqVOnsmDBApYtW8bAgQNJTk5m4cKF+Pv7V3j9/fv3M3DgQLp168b8+fPx9/fn5Zdf5tChQzXapTQjI4MDBw7QrVs3LrnkEjIzM9m9e7fTZFBYWMjPP//MVVddVWPXr9fWvm66Typ/GP4m+FX8O1HvBAbDxdea7d+XWBtLDXJlBPJfgKnAMuBbpdTlxR6XFDsuSSlVug3gVSAdWK6UukEpdR3wJZAPvFRTN1GfbNhg+jcvWrSIyMhIRo8ezcSJE2nevDk///wz7du3Lzq2RYsWXHnllSxZUvIXdtGiRXTp0oXx48czceJE4uLiWL9+Pe3atavw2o72iAsuuIAlS5YUVT316tWL0aNH8/e//52TJ0/WyH1u2bKFli1bFrUNDBs2jCVLlrBt27Yy1URJSUmkp6eXGU8hquDETvj+dbPd+yGIcVawF3Syt9ftXQ1nndZ21zqutBkMtz8Psz+KO4AZXeyU1jpFKdUXkxQ+wiSftcCVWuuDbkcr2LhxIxEREfTo0YN588rt2VvkoYce4rbbbuP48eM0bdoUMF1HV6xY4fa1Y2Ji2LVrl9PXFi5cWGZfXl4eBQUFFBYWkpeXR05ODkFBQfi5sBpW6baB4cOH88ADD6CUKpO05s6dS9++fena1aUZUkR5tIZlD0PBOYhsBf2esDoi39V+AASGQt4Z+GM5XFJ59aqvq/SvUmvdX2utynm0Ln2ck/N3aa1v0FqHa63DtNZDtNbbSh8nXLNhwwYuvfTSMj13yjN69GguueQSS+bumTRpEjabjbVr1zJu3DhsNhtr1qwpccx9993HfffdV+bczZs3l0gG11xzDSdOnKBLly4l7n3fvn3Mnz+fl19+2XM3Ul/8+gkc+K/ZHvYGBIVUfHx9FmiDi0zbXF2pKqra8FdhCa01v/zyC/fee6/L5yilePfdd/n66689GJlzc+bMYc6cORUe8847zqcE/r//+78SPwcHB3PmTNllBw8ePMhbb71F7969qxynwFR1JD5ttruMhvbXWBtPbdDpBti2GPZ8Z8Zk2Fzrku2rJBnUIkop0tLS3D6vW7duTrtj1gX9+vUrM92GqIJvp5gpJxqEm5HGonLtB5oFfvKzYefX0N29Efa+RpKBqJRjoJqoow6ug0326T6ufgYaxlR8vDAahEHcANi+1FQV1fJkIIvbCFGfFeSfn3KieTz8qR4tWFMTOo0wz7tXwrmy1Zi1iSQDIeqzn2dDylZAwbDXZUyBu9oPMOMxCnJh31qro6kWSQZC1FcZx+A7e/tAzzvNaGPhHlsktLSv8bXrG2tjqSZJBkLUVyuegXOZZjnHq5+2OpraK85MDMmuFbV6BTRJBkLUR/vWwm/2pUYGPg8hjSo+XpQvzj7eIP0QnNhhbSzVIMlAiPqmIA+W25exbNELutfTZSxrStNO56ej35VobSzVIMlAiPpm3TvmG6zyg+teAxemBxEVUKpkVVEtJb8FQtQnmcmQZJ+6o+dd0LxuDkb0OkdV0cEfISfd2liqSJKBEPXJimfhXJa90fgpq6OpO9r0A79AKMw3i97UQpIMhKgvDvwAWz412wOmgi2qoqOFOxqEQesrzHYtbTeQZCBEfVCQD8sfM9uxl0J87Z9y2ec4qop2rYDCQmtjqQJJBvXInDlzSEpKsjoMYYWNH5wfaTx0ujQae0J7eyNyVkqt7GIqE9XVA59++imF9m8qWmtmzpxJ9+7di5bFFHXcmVOw6kWz3eMOGWnsKY3joGFzyDwG+9ZAs05WR+QW+XpQD9x0002cOHGCGTNm8OSTTxIdHS2JoD5Z9TzkpEFwBFwzxepo6i6loM2VZnvfmoqP9UGSDGqx06dPM3nyZGJjY7HZbPTp04ctW7Y4PdaxOphSqtJF70UdcvQX2DjXbF/1FIQ2tjaeus6RDPZ/D4UF1sbiJkkGtVRKSgoJCQls2rSJWbNmsWDBAlJTUxk2bBg5OTkljl2wYAHR0dE8/PDDTJs2jZSUFGk7qA8KC2H544A2o2R7yvTUHte6r3nOTYdjm62NxU3SZuCCeTvmMajVIKJt0WVeO5V9isQDidza4VavxjRu3DhCQ0NZuXIlQUFBAAQEBDBkyBBWrVrF0KFDi44dM2YMYBqQlVI8/PDDXo1VWOS3z+Dwz2Z7yCvgL3/uHhfVCiJbQdoB2L8WYntYHZHL5LejEvN2zOOldS/x6Y5PeX/w+yUSwqnsU9z1zV3sSd8D4LWEkJiYSGJiIqtXry5KBABt2rQBzCLxzkyYMMEb4QlfkJtpBpiBWYClTV9r46lP2lwJv3xk2g2umGx1NC6TaqJKDGo1iHYR7diTvoe7vrmLU9mngJKJoF1EOwa1GuS1mGbPnk379u3p3bs3+fn5RY+MjAyAEglC1FNrppsujgE2GPSi1dHUL23sa3If+BHyz1kbixskGVQi2hbN+4PfL5EQdp3eVSIRlC4xeFJ+fj6JiYns3r2bwMDAEo9evXoB50sIop46tQd+nGW2+z4CkRdaG0994yiF5Z2Bo5usjcUNkgxcUDohjPpilCWJAGD79u1kZmYybdo01q9fX+IxatQo/Pz86Nmzp9fiET7o679BYR5EtoTeD1kdTf3TMAYaX2S2a1EXU0kGLoq2RTO93/QS+6b3m+7VRACwf/9+ABISEujZs2eJx+bNm0lISCAyMhIwPY4GDRpESEgI3bp1Y+PGjUXvM2XKFDp16oSfnx/z58/36j0ID9qZeH75xcEvQaDN2njqq1o43kCSgYtOZZ/isdWPldj32J9FFeYAACAASURBVOrHitoQvCU/Px+AwMDAEvuTkpLYs2cPkyZNKtr35z//mfbt23Pq1CkefPBBRo8eTV5eHgBxcXHMnDmzqGpJ1AH55+Drv5rtNv2gwzBr46nPHMng0M+Ql21tLC6SZOCC0o3Fi65f5LRR2Rvatm0LwLZt24r25ebm8uijjxIfH8/YsWYCsszMTJYtW8aUKVOw2Wzcc889APzwww8AjB07loEDBxIcHOy12IWHrXsbUveA8och/zAjYoU1WvUxzwW5cKR2tBu4lAyUUi2UUjOVUt8rpbKUUlop1d/Fc+fYjy/9+KlakXtJ6UTw/uD3iYuKK9Oo7K2E0L17d+Lj45k6dSoLFixg2bJlDBw4kOTkZBYuXFg0unjXrl1ERkbSrFmzonO7du3K77//7pU4hZdlJsPqV8x2r0nQtKO18dR3odHn2w0O1YqPOpdLBu2BW4EsYGUVrpMFJJR61IrhkIkHEp02FpduVE484L05zBctWkSXLl0YP348EydOJC4ujvXr19OuXbuiY86cOUN4eHiJ88LDw8nKyvJanMKLvn3u/KI1/f9qdTQC4MLLzPPBddbG4SJXB52t0Vo3BVBKjQCud/M6BVrr2pEeS3EMJHM2AtmRELw9ArlNmzasWFHxWquhoaFkZmaW2JeRkUFYWJgnQxNWOLwBNn9itq9+Rhat8RUtLzeDzw6tM1OD+Pi04S5Fp7WufSs11KBbO9xabq+haFu016eicEVcXBynT58mJSWlaN/WrVvp1Kl2TasrKlFYeH7Rmphu0GOctfGI8y683DznpMHJndbG4gJvpaowpVSKUqpAKXVAKfWaUkq+onpQw4YNGTZsGC+88AI5OTm89957aK3p3bs3AHl5eeTk5FBYWFhiW9Qymz85P7BpyCvgJzPS+ozodhBinyW2FrQbeCMZbAYeBW4HhgILgAeBVUqpQGcnKKXSKnoAEV6Iu9Z7++23+eOPP4iKimLmzJl8/vnnRV1SJ02ahM1mY+3atYwbNw6bzcaaNbWnT7QActJNWwFA15ugVYK18YiSlKpV7QYen6hOa/1GqV3fKKX+AGYDY4CPPR1DfdWsWbNy2xbmzJnDnDlzvBuQqFmrX4EzxyEwFAY+b3U0wpmWl8EfX5p2Ax9nVYvGx0AhpldRGVrryIoeQLpXoxXC15zYCeveMdt9H4HwC6yNRzjnaDdI3QNZJ6yNpRJWJQPHaBippBbCXVqbkcaF+RDVGhIetDoiUZ4L4sHfPouwj5cOrEoGY+3X9v1WFSF8zR9fwR77cJ/BL0GgjCL3WQEN4IJLzLaPNyK73GaglLrRvvkn+3M/pVRj4IzW+iv7MfsBtNat7T+3Aj4C5gF7AH9gAKYB+Ufg02rfgRD1SV4OfPM3s93uGrh4aMXHC+tdeJkpFfh4I7I7DcgLSv081f58AGhdzjkZwEngCaAZpnpoL/Ay8LLWOt+N6wshfnwLTu8HvwCZf6i2aHk5/PAmHPvVJHMfLcm5nAy01pX+1jlKBMV+Pg2Mcj8sIUQZ6Ydh7etm+/I/Q+M4a+MRrnE0Ihecg2ObTQ8jH+Tb46OFEOclPg15ZyGsGVz5uNXRCFeFRpuGfvDplc8kGQhRG+xbA9sWm+0Bz0FweMXHC99yQQ/z7MPTWUsyEMLXFeTBV0+Y7Ra9oNsYa+MR7ot1JIONFR9nIUkGQvi69e/B8d8BBUOn+/zsl8IJR8kgdQ9kp1kbSznkt0oIX5Z1Ar77u9m+dIIZxCRqn+bdQdk/bo/+Ym0s5ZBkIIQv+3Yq5KabNQquedbqaERVNQiDxhebbR9tRJZkIISvOvQz/Gqfx/HqpyGkkbXxiOqJ9e1GZEkG9cicOXNISkqyOgzhisICWP6o2W7eHS6daG08ovoc01L4aDWRx6ewFtb79NNPixau0Vozc+ZMunfvTv/+/a0NTJRv4wdmgBLA0Fdl0Zq6wFEyyDgCmSnQsJm18ZQiJYN64KabbuLEiRPMmDGDJ598kujoaEkEvuzMKVj5gtmOHwsX9rI2HlEzmnUBP/t6Xj7YbiDJoBY7ffo0kydPJjY2FpvNRp8+fdiyZYvTY5V9DhulFP7+8i3Tp62catbNDY6AAVMtDkbUmIAGENPFbPtgu4FUE1Vie4eOLh/bccd2D0ZSUkpKCv369aNJkybMmjULf39/Hn/8cYYNG8bOnTsJDj4/GdaCBQuIjo7m4YcfplWrVmzevJmkpCQpHfiiQ+th04dm++pnIKyJtfGImnVBD9Nm4IMlA0kGtdS4ceMIDQ1l5cqVBAWZxTMCAgIYMmQIq1atYujQ81MbjxljRqzOmTMHpRQPP/ywJTGLShQWwJePmO2YbtDzTmvjETUvtgdseN+UDLT2qVlnJRnUQomJiSQmJrJ69eqiRADQpk0bAPbt2+f0vAkTJngjPFFV69+H5C2AgmFvSKNxXeQYiZydCmkHzk9g5wOkzaAWmj17Nu3bt6d3797k5+cXPTIyMgBKJAhRS2SmwKoXzXaPcdCip7XxCM9ocjEEhphtH+tiKiWDWiY/P5/ExEQyMzMJDAx0eoyjhCBqkRXP2EcaN5JG47rMz9/0Kjr8MyRvhc4jrY6oiJQMapnt27eTmZnJtGnTWL9+fYnHqFGj8PPzo2dP+VZZq+xbA1vsK8AOmCojjeu6mK7mOfk3a+MoRUoGtcz+/fsBSEhIKPOhv3nzZhISEoiMjCQ3N5f77ruPFStWkJmZSY8ePfjnP/9J586dLYhalCs/F5bZG41b9IJL7rA2HuF5PpoMpGRQy+Tnm2WjS1cRJSUlsWfPHiZNmlR0XNu2bfnpp59ITU1l+PDhjBgxwuvxikr88Cac2gXK395oLH+SdV5MN/OceRTOnLQ2lmLkN6+Wadu2LQDbtm0r2pebm8ujjz5KfHw8Y8eOBSA0NJRnnnmGFi1a4O/vz4MPPsiePXs4deqUJXELJ1L3wZpXzfblfz4/IEnUbU07np/O2odKB1JNVMt0796d+Ph4pk6dSqNGjbDZbLzyyiskJyezevXqckcX//DDDzRt2pTo6GgvRyyc0hqWPwb5ORAeC/3/ZnVEwluCQiA6Dk7+YZJBu6usjgiQkkGttGjRIrp06cL48eOZOHEicXFxrF+/nnbt2jk9Pi0tjXvvvZeXXnrJy5GKcm1bDLtXmO0h/zDz3Yv6wwfbDaRkUAlvTjHhqjZt2rBixQqXjs3JyWHEiBEMGzaMO++UEa0+ITsNvv6r2b54KHQYZm08wvtiusLWhT6VDKRkUIcVFBRwyy23EBsby6uvvmp1OMJh5XOQlQKBoTDkFZ+akkB4iaNkcHIn5GVbG4udJIM6bNKkSWRnZxfNSSR8wMF1sOFfZvvqpyHyQmvjEdZwJANdAMd9o/ZBkkEddeDAAT744APWrFlDVFQUYWFhhIWFsXbtWqtDq7/yz8Ey+ySBzePhsnutjUdYJ6wphMWYbR+pKpI2gzqqVatWaK2tDkMU99+ZcPx3061w+AyZiK6+i+kKu5N9Jhm4VDJQSrVQSs1USn2vlMpSSmmlVH9XL6KUulQptVIpdUYpdVopNV8pFVvlqIWobU7shDWvmO3L7z+/Hq6ov3ysR5Gr1UTtgVuBLGClOxdQSnUEkgAF3AhMAi4BkpRS0p9O1H2FhbD0/0HBOYhsBVc9aXVEwhc4kkHKVvM7YjFXq4nWaK2bAiilRgDXu3GN54BMYLjW+oz9PbYC24AHgH+48V5C1D4bP4CDP5rt4TMgKNTaeIRvcExLcS4LTu+DaOfjhLzFpZKB1rpKaUspFQgMAxY6EoH9/XYAPwGjq/K+QtQa6UdgxRSz3f02aHe1tfEI39GoreleDD5RVeTp3kRtARuw1clrWwCZjEXUXVqb3kPnMiGkMQyeZnVEwpf4+Zl5isAnupd6ujeRYyKcVCevpQI2pZRNa11i1IVSKq2S942oieCE8Kgtn8KuRLN93auyToEoq2lHOLLB9DKzmLfGGVTUx1H6P4q6JzMFvnrCbHccDp1k+nDhRD0qGTjmS3Y2VWYjIFtrnVP6Ba11ZEVvai85SOlA+K7lj0JOGgRHwtDXZMoJ4ZwjGaTuhbwcCAy2LBRPlwz2Atk4bxvoivO2BCFqt62LYPsXZvval6FhM2vjEb6raSfzrAvMIkcW8mgy0FrnAV8Co5VSIY79SqmLgARgkSevL4TXZR2HL/9ituMGQfdbrI1H+LawZqb0CJZXFblcTaSUutG++Sf7cz+lVGPgjNb6K/sx+wG01q2LnToF+Bn4Qin1KhAKTAP2A/9bjdiF8C1aw7L/gexUCI6A4TOlekhUTClTOjj4g+WNyO60GSwo9fNU+/MBoHV5J2mtf1dKXYUZXPY5kAckAn/RWme6cX0hfNtvC2HHMrM95BUIv8DaeETt0LSjPRnssDQMl5OB1rrSrzilSgTF968HZLSNxebMmUPr1q3p37+/1aHUPZnJptEY4OLroNsYa+MRtUdRj6LaUzIQtdSnn35KoX3uE601M2fOpHv37pIUaorWsORB03vIFgXD3pDqIeE6RzJIOwC5WZYtgSrrGbgpeW86yXvTrQ7DLTfddBMnTpxgxowZPPnkk0RHR0siqEkb/nV+PeNhb0jvIeGeJh3Pb5/8w7IwJBm4If9cASvnbmfVh9vJzyuwOhxOnz7N5MmTiY2NxWaz0adPH7Zs2eL0WMdKZ0op/P1lHv0ac2oPJD5ttrveDJ1HWhuPqH1Co02vIrC0R5EkAzf8vHQfaSlnOZ18lp+X7rM0lpSUFBISEti0aROzZs1iwYIFpKamMmzYMHJySo7jW7BgAdHR0Tz88MNMmzaNlJQUkpKSrAm8LinIh0X3QN5ZCI+FodOtjkjUVk06mGcLk4G0GbgoeW86v357sOjnX1ccpG18E2LaWjMQety4cYSGhrJy5UqCgoIACAgIYMiQIaxatYqhQ4cWHTtmjGnMdKyF/PDDD1sSc52z9jUzrwzAiFlgq3DgvBDla9oJ9q2WZODrHNVDxVeR1BpWfbidm5/6EwGB3q12SUxMJDExkdWrVxclAoA2bdoAsG+f81LLhAkTvBFe/XDoZ1htX4rjsj9D2/5WRiNqOx+Yo0iqiVzgqB4qzarqotmzZ9O+fXt69+5Nfn5+0SMjIwOgRIIQHpCTAZ/fbaYQaNYFBky1OiJR2zmmpcg8CtmnLQlBSgaVKF09VJq3q4vy8/NJTEwkMzOTwMBAp8c4SgjCQ5Y/ZroBBgTD6PcsnVxM1BFNLj6/fXwHtErweghSMqiAs+qh0hzVRd7qXbR9+3YyMzOZNm0a69evL/EYNWoUfn5+9OzZ0yux1Eu/LYQt8832wBfOF++FqI7gcIi40GyfsKaqSJJBRZTvjR3av38/AAkJCfTs2bPEY/PmzSQkJBAZaRoyp0yZQqdOnfDz82P+/PkWRl1HnNoDS+2N73GDodcka+MRdYujdHDSmtlLJRlUICDQn6vHdawwISgFV4/v6LVG5Pz8fIAyVURJSUns2bOHSZPOf0DFxcUxc+ZMevXq5ZXY6rT8XFh4p1nCsmFz03vI174piNqt8UXm+eROSy4vyaASMW0jiB/QstzX4we2JKaN97qXtm3bFoBt27YV7cvNzeXRRx8lPj6esWPHFu0fO3YsAwcOJDhY6rSr7dupcOxXUH4w6l0IbWx1RKKuiW5vni1KBtKA7IJe17dh/28nOZ1cskdRVEwIvYZ7t7G2e/fuxMfHM3XqVBo1aoTNZuOVV14hOTmZ1atXy+hiT0g7BD/NMttXPg5t+lobj6ibHCWDtENw7iwEhVR8fA2TkoELnFUXebt6qLhFixbRpUsXxo8fz8SJE4mLi2P9+vW0a9fO67HUeYUFsH+t2W51BVz5mLXxiLrLkQzQkLrH65eXkoGLHNVFv6ww3Uy9XT1UXJs2bVixYoUl165XdCHkZkLBOQhtAqPfB3/5kxEeEtYUGkRAbrqpKorp6tXLS8nADb2ub0NUTIgl1UPCAulHoDAfUGY8QXhzqyMSdZlS0DjObFvQo0i+5rjBUV3k2PZ1eXl5FBQUUFhYSF5eHjk5OQQFBeHnJ98BKnU2Fc6eNNsXxMt0E8I7Gl9k5ruyoBFZPhXcFNM2wrLJ6dw1adIkbDYba9euZdy4cdhsNtasWWN1WL4v76xpxAPwD4SYbtbGI+qPopKBJANRg+bMmYPWusRDFrWpREE+pO4DCsE/CBo0lPEEwnuKxhrsBvvqhN4iyUAIB60hbb9pMMYPotqYcQVCeIujZJCfDRlHvHpp+U0XwiHzmOk9BBB5odf7eQthvoDY2yO9XFUkyUAIMA3GWSlmO7QJhDSyNh5RPwUEQSN7T0Uv9yiSZCDEuTOQZp+mPCjMLGEphFUsmqNIkoGo3wrO2RuMNfg3sBfTpcFYWMiiHkWSDET9VVhgEkFhnqmnbdRWRhgL6xWVDKSaqNqUUhR6uVuWqGW0NquV5dknH4xq7XTFsoKCAhmkJ7zLkQyykiEn3WuXrZO/5Q0aNCA3N5eCAu+sPiZqoYyj5//QIlqYlaZKcYzcDgiQ0oLwIsdU1mDGG3hJnUwG4eHhaK05duyYJARR1pkTcOa42Q5tYh6laK05efIkhYWFRETUjhHnoo4IaQQh9vUyvNhu4NJXHqVUGPAScBMQCWwDntdaf1HJeVOBKU5eStFax7gXqutsNhvNmjUjJSWFrKwsGjRoIEV9YeTnnh9L4B8E5/JNdVHpw/LzOXfuHOHh4YSEyHgD4WWNL4KDJ30vGQCLgR7A48A+YAKwWCk1XGu93IXzBwJZxX4+506QVeFY+CUzM5OcnBx0Ravai/ohMwV2JYIuMKWBuEHl9hwKCgqiUaNGUioQ1ohuCwd/gNS9XrtkpclAKTUUGACM0lovtu/7DmgLvAa4kgw2aK3TqhNoVdhsNmw2m7cvK3xRyu8w70bTThDdHu5MhNBoq6MSwrlG9oWqvJgMXKk7GQmkA0scO7T5mj0X6KCU6uSh2ISoGaf3w8ejTCIIawZjF0kiEL6tkVnrnNS9puebF7iSDLoAv2utS/fV3FLs9cpsV0oVKKWOKaXeVUo1rehgpVRaRQ9Ayu7CNRnH4MMbzLxDDcLh9oUQ1crqqISoWLS9ZHAuy3R48AJX2gyiAWetGKnFXi/PHuBJ4BdMO8EVmHaHa5RSl2qtT7sRqxDuOXMKPhphSgaBIXD7AmguaxOIWsBRMgA4tccsielhrjYgV1ROKfc1rfVHpXatUkr9BCQCDwAvlnNeZEXBSOlAVCo7zVQNndhheg2N+RhaXm51VEK4JigUwmLMwLPUPdAqweOXdKWa6BTOv/07pnVMdfJaubTWK4BjgOfvTtRP2Wnw0Ug49qtZj2D0+9D+GqujEsI90d5tRHYlGWwDOipVZpWPrvbnrVW8rswXIWpeTropERzdZBLBqHeh0/VWRyWE+xxTWZ/a45XLuZIMFmMGmg0vtX8c8IfW+nd3LqiUGgQ0A35y5zwhKpWdBh+PhiMbTSIYORu63mh1VEJUjZe7l7rSZrAc+A54XykVjRl0Nh7oA9zgOEgplQT001qrYvt+AT4E/gDygN7Ao8Bu4H9r5haE4HxjcfIWQMGId6DbTVZHJUTVle5e6uGp1StNBlprrZQagZmO4iVMKeF3zCC0pZWcvgO4H7gACAQOAe8BL1gxCE3UUZnJpvvoiR1mKupRUiIQdUDp7qUe7lHkUm8irXUG8KD9Ud4x/Z3su7XKkQnhitP7TWNx6l7wC4SbPoCOpWs0haiFvNy9VGZvE7VX8m/w/iCTCAKC4db5kghE3eHoXgpeaTeQZCBqp/3fwwdDzSL2wRFwx2KIG2B1VELUrKLupZ7vUSTJQNQ+vy2Ej0ZBbgY0bA4Tv4JWva2OSoia5+he6oWSgSzhJGoPrWHNq/CdfeB6dBzcsQgiW1oblxCe4uhe6oWxBpIMRO2QnwtLH4bNn5ifW/eFmz80q0IJUVcVVRPt83j3UkkGwvdlJsOnd8Dhn83P3W+D4TMhIMjauITwNEePonOZHu9eKslA+LbDG2D+7WbCLhRc/RT0fdTjA3CE8Ale7F4qDcjCN2kN69+HD4aYRBDUEG6dB1c+JolA1B9e7F4qJQPhe3IzTfvA1oXm5+j2cMs8aHKRtXEJYYXoduensvYgKRkI33JsC8y+6nwi6DQCJn0niUDUX47upaf3e/QyUjIQvqGwEH78J6x6AQrOmaklrv07/OluqRYS9Vtka/MsyUDUeemH4T/3w77V5udG7WD0exDbw9q4hPAFUa3NsyQDUWdpDZvmwjdPm65zAD3GmxJBUKi1sQnhK6Jameezp0x7WoOGHrmMJANhjdP7Yelk2Jtkfg5tAsNmQMdhVkYlhO9xlAwATh+AmC4euYwkA+Fd+efghzdhzXTIzzH7ut4E1/4DQp0ttS1EPRfaBAJDIO8spEkyEHXBnu/gqyfg5B/m54YXwHWvQofrrI1LCF+mFES2ghPbPdpuIMlAeN6pPfDNU7DzK/Oz8ofL7oOr/uax+k8h6pSo1pIMRC2WddzMMrrhX1CYZ/a1TIAhr0DzbtbGJkRt4mhEPn3AY5eQZCBqXnYa/PAW/PQ25J0x+yJbwsAXoNMNMm5ACHd5oXupJANRc86cgp9mwc+zzcIzALYo6PM/0OteCAy2Nj4haitHMkg74LGprCUZiOo7vR/W/R9snGN6PAAEhcHl90PvB82ylEKIqou0VxPl55ilXhvG1PglJBmIqtEaDv4E696G7UtBF5r9wRFw2Z/hsntl4RkhaoqjzQDMly9JBsJy2Wmw5VPTKHxix/n94bHQ6x7oeScEh1sXnxB1UVAohDaFM8dNI3LLy2v8EpIMROUK8mDPKtg8D3Ysh4Lc869d0AMSHjANw/6B1sUoRF0X1cqeDPZ75O0lGQjnCvJh/xrY9h/YsczMi+IQGArdboJLJ8IF8dbFKGqd5L3pAMS0lXYkt0W1hsPrJRkIL8hOg93fws5vYFci5KQVe1FBm75m/eGOw6FBmGVhitop/1wBK+duRym4+ak/ERDob3VItYujETnNM2MNJBnUZ3nZZo3hfavNhHFHNp5vCHZo0Qs6jzDVQBEtLAlT1A0/L91HWsrZou3eo9pX6/2OpGXz7e8pZGTnEW4LZGCnZlwQaauJUH2Th8cauJQMlFJhwEvATUAksA14Xmv9hQvntgNeA67CrKy2FnhUa/17VYMWVaC1WTfgyEY4sgEOroOjv5wfGezg3wDa9oOLBsNF10oCEC7Z3qFjha+nh7fml0v+AihQil9XHKRtfBO3q4vm7ZhHj+h+zPjmGN9sS6ZQn3/tueXr6HrRft4dOZmmDevgmBZHMsg4Cvm5ENCgRt/e1ZLBYqAH8DiwD5gALFZKDddaLy/vJKVUU8yH/3FgPJAPPA2sVkpdorU+XI3YRXlys+DkTvNI2QrJW83zmRPOj2/aGdpdBW2vglYJspaAqFEFfoFs73AHqPOr7GoNqz7c7lZ10bwd83hp3Uv45f+LjL13o/X5qkrln0Vwy9ns1ccZNieHLyf8lSYNa/bD0nJF3Us1pB2CxtUrWZVWaTJQSg0FBgCjtNaL7fu+A9pivvGXmwyAR4EooKfW+qj93B8xCeUp4M/Vir6+KsiDzGTIOGK+7acdhNP7INX+yKggxwbYoHl3uLAXtOoNF14m4wGER+1rfR1nQ8r2iz+dfNat6qJBrQYxY90czgYcxdZqNtkH7kEXhKH8s7C1mo1/g+MU5DblRHIHnl2ylbfHXlrTt2Kt8FjwC4DCfFNV5O1kAIwE0oEljh1aa62UmgvMVkp1qqDKZySwwpEI7OeeUkotBUZRX5OB1uYDPe+s/ZEN57LMKka5mZCTAdmnTQPu2VQ4exLO2B9ZySV79lTE1giadYZmXcwc6M3joUkH8JemIuEd6eGtOXjhNeVOoeBOdVFObggndt1JcEvzwW9rNZucI7cRHPtJUSJwJIhvtiVzNC27brUh+PlDxIXmi9/pfTX+9q58KnQBfte6dMsiW4q/XvokpZQNaAcscPKeW4DblFJNtdbHnZyb5uSc4qreL23+7WbBdQetyzlQOzlG27ftz7qw2HOhydi6AAodjzyzryDPXLPgnKnry88p21BbVSHRpl4/qjVEtYFGbaDxRdD4YlksRljKWfVQae5UF337ewqF+WFkH7inqCQQ2naGuVaxRABQqOHb7SmMS2hdY/fjE6Jam0TggR5FriSDaGCnk/2pxV53JgpQxY4r79wyycCj9qw6P3+OLwoMNXP82yIhONJM9BYaDSGNzYpHDWMgrJl5Do+FoBCrIxaiHLrEd6rqysg2nR10QRg5R24rSgQAOUduK0oEDulnS3WOqAs82KPI1fqCiv5LK/vvdvtcrXVkRW9oLzlUrXRw2X1le9BQzgyAJYq1qtg+Zb7tKMezv9n28zfbfv6mbs/x8A8yLf9+ARAQbLYDbWY7KNQsaRdkTwJ+0vda1A3+hfl0/OMjNhbrRVSaUnD1+I4uNSKH28wId+WfRXDsJyVeC479pETJACAipA6OiG9/jfm8aFHz7SGuJINTOP/272h1dPbNH+A05sO+Kud6zoApXr+kEPVVRMZ+Wh5aycGWA52+Hj+wJTFtXPteN6BTM55bvq6ozaAgt2mJNoPijcp+CgZ0bFaTt+IbOg43Dw8ovzLvvG1AR6XKVPx1tT9vdXaS1job2ItpUyitK3DCWXuBEKJuabN/GSFnksvsj4oJodfwNi6/T3CDszSJ+1eJxuLC3BiyD9xDQW7TooSg/LMY3DmmbjUee4EryWAxZqBZ6XQ0DvijksFji4GBSqmifmVKqUb291rkZqxCiFrIUV1U1OEC96qHHBIPJHKWo/jlx5SoEtIFYSUSQpOYHTx/g7PvoKIirlQTLQe+A95XSkVjxgiMB/oANzgOUkolAf201sUrBl8F7gCWK6We4/ygs3zMHM+DTAAACTdJREFUiGYhRD1QurrIneohh1s73ArgdASyLggj5+A9dL1oP+9NeLjuDTjzAqXL7VpZ7CClwjEf3jdiSgm/Y6aj+E+xY5IomwxQSsVhkkLp6Si2VTlopdIiIiIi0tIq64EqhPAV+XkFfDZtPVAzE9UdTcvm2+0ppJ/NIyIkkAEd6/jcRDUgMjKS9PT0dGeddFxKBr5GkoEQtZNMYW2tipKBDEUVQniNJAHfVVtLBoWAioiQXywhhHBVeno6mBmFynQeqq3JIB/T/pBRhdMdGSS95iLyeXLP9YPcc/1QnXsOBwq11mVqhWplMqgOx7xHlY1yrkvknusHuef6wVP37Mo4AyGEEHWcJAMhhBCSDIQQQkgyEEIIgSQDIYQQSDIQQgiBJAMhhBDUw3EGQgghypKSgRBCCEkGQgghJBkIIYSgDiUDpVSYUupNpdQxpVS2UmqDUup6F89tp5T6j1IqXSmVqZRarpTq5OmYq6uq96yUulsp9YVS6oD9vF3292nijbirozr/z8XeQymlVimltFJqhqdirSnV/N1WSql7lFIblVJnlVJpSqmflFK9PR13dVTznkcrpX5QSp22P35USt3s6ZirQynVQik1Uyn1vVIqy/672d+N8y9VSq1USp2x3/N8pVSsOzHUmWSAWW/5dsyymtdhVmNbrJQaWtFJSqmmmNXXWmOW87wVaASsVkq18GTANaBK9ww8h5nx9W/AtcDrwM3AeqWUr0/4VdV7Lm4S0MEDsXlKde75PeAV4HNgqP19lgOhngm1xlT173k8sBA4CtxmfxwBPlVK3enRiKunPeazJwtY6c6JSqmOQBKgMKtRTgIuAZKUUmEuv5HWutY/ML/kGhhZbJ8Cvge2V3LuK0A2cEGxfdGYD8u3rb43D91zUyf7+tnf7yGr780T91zs+FggDRhtf68ZVt+XB/+fRwMFQILV9+HFe04C9gN+xfb52fclWX1vFcRdPN4R9vvv7+K5n2GSX2ixfR3s//dPuBpDXSkZjMTM7b3EsUObf5G5QIdKqnxGAiu01keLnXsKWAqM8ky4NaLK96y1Pu5k93r7sy+Xhqrz/+zwNrBGa/25Z0KscdW554cw9/qjZ0OscdW55zwgS2tdWOzcQsw37lzPhFt9xeN1h1IqEBgGLNRanyn2fjuAnzBfCFxSV5JBF+B3J/+gW4q9XoZSyga0A7Y6eXkL0NRejeSLqnTPFbja/uzs38JXVOuelVK3AlcBD3ggNk+p6u92IHA58JtS6iWlVIpSKl8ptc1eleLLqvP//E+go1LqKaVUY6VUE6XUU8DFwBseiNVqbQEb5X+Gufw5UFeSQTSQ6mR/arHXnYnCFD+rcq7VqnrPZSilGgFvArswRU5fVeV7Vko1BmYCT2mtD3kgNk+p6j1HAw0w7WA3AA8CQ4DfgDlKqUk1HGdNqvL/s9Z6CXA98ChwAjiOaRu7SWv9dQ3H6Qsc/xbl/XvZ7F96K1Vm6bNarKKh1JUNs67OuVaqdtxKqRD+f3v3F2JFGcZx/PsgqERt/6hNIsmiLhIvi7ooCJRls6XChb0oIrrJCISIuomKLgqKIvpDN3nhRSRaWBTRIousBAVpBkGiULYilLBugpXaH3m6eN5Tw/Gc9pyZ95w5e/h9YBidP2ff58yceWbe950Z+IhoNL/D3Qf2UjopG/MbwI/EmeNSUybmxoneSuAudz8KYGYzxNnks8A72UqYX6ntbGYbgPeA7USj+TKiIXq7mU26+6dZSzk4Kh8LhiUZLND6bOGyNG6VNQFOEl9UmXXrVjbmf6Uzho+Jngdj7v7tIqvUrVTM6QAxRVSFjZhZcfaK1IPqN3f/O2NZc6m6bx9qJAKIunczmwaeMbMr27Qf1a3sdjaiXWGPu28uzJpOPQPfBIYtGSykcbvv64y7n+3kg4almug7op6wOZ51adyyHtzdzwBHaF2vtg6YH9AfC5SMucHMVhINdLcBd7v7F/mLmF3ZmNcS+/oscZBsDACb07/XZy1pPlX27e/bfGYjG5ZqtOyDstt5FFgF7G8xbz+wJu33w+QI0Ruy3TGs4zbAYUkGHwKXABNN0x8EDrv7wUXW3WBmVzUmpDr0CWBX7oJmVDpmM1tBVA3dDtzj7nt7Vsq8ysb8AdFw3DxAVCXcCXyVvbR5VNm3dxEH1WsbE9LZ8zhwxN1P5C1qNmVjPgmcBW5pMe9WYKHTs+Slwt3/Iq52NqUqXwDM7EbiRK/zY1jd/Wsz9dE1YA9wAniY+HFvI858JgrLzZJ6qRWmjQLHgQNEQ9tG4Evi8mt13bH1KOZPiCqE54kfSXG4vu7YehFzm89bCvcZVNnOlwPHgEPEDU3jRGJ0YKru2HoU82spvq3EDZUbgR1p2tN1x7ZI3JNpeCmV97n0//HCMnPAXNN6NxFdZ2dSzJvSNv8BuKjjv1/3F5DxixwhGgePE2cHB4B7m5ZpeZAAbiCqTE6lL/UzYG3dMfUq5rSjtRu21R1Xr7Zzi88a+GRQNWbizvr3+e+seV/zuoM4VNi3lwGPAF8TNxf+QvS3f4D0yP5BHf7nNzlXWOa8ZJCm30wk0N9T3DuBa7r5+3qfgYiIDE2bgYiIVKBkICIiSgYiIqJkICIiKBmIiAhKBiIigpKBSFZmNmZms+nVhfNm9tYQPgJBhpCSgUgmZvYEMA38DDxO3On9GPHobJGBppvORDIws/XAbuApd3+lMH2aeJzCFe5+qq7yiSxGVwYiFaWna74OfAO82jR7FlhO92+eE+mrYXmfgUidxoiHhT3k519q/5nGF/e3SCLdUTIQqW4KOAd8nl6vWTSaxr/2t0gi3VGbgUhFZnYUWL3IYle7+0/9KI9IGUoGIhWkK4F54oUsb7dYZCfwh7uv6mvBRLqkaiKRaq5L433uPlOcYWZrgEuJF7SLDDT1JhKp5sI0btUmMJnGO/pUFpHSlAxEqmncOzBSnGhmy4FHgcPEO2pFBpqSgUg1B4HTRPfSoheIV05ucfdz/S6USLfUZiBSgbufNrOtwBYzexfYS7x4/j7gSXffXWsBRTqk3kQiFaUqoZeB+4ELiJexv+ju07UWTKQLSgYiIqI2AxERUTIQERGUDEREBCUDERFByUBERFAyEBERlAxERAQlAxERQclARERQMhAREeAfeRzK/yMSpzYAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "ax.plot([theta_true], [0.0], 'o', markeredgewidth=2, markersize=10, label='True value')\n",
    "ax.plot(thetas, Theta_post.pdf(thetas), label=r'$p(\\theta|x_{1:N})$')\n",
    "ax.plot(theta_star_01, 0, 'x', markeredgewidth=2, label=r'$\\theta^*_{01}$')\n",
    "ax.plot(theta_star_2, 0, 's', markeredgewidth=2, label=r'$\\theta^*_{2}$')\n",
    "ax.plot(theta_star_1, 0, 'd', markeredgewidth=2, label=r'$\\theta^*_{1}$')\n",
    "ax.set_xlabel(r'$\\theta$')\n",
    "ax.set_title('$N={0:d}$'.format(N))\n",
    "plt.legend(loc='best')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Questions\n",
    "+ Repeat the analysis for $N=0, 5, 10, 100$. Do these estimates converge to the true value?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example: The Normal distribution\n",
    "\n",
    "The normal (or Gaussian) distribution is a ubiquitous one.\n",
    "It appears over and over again.\n",
    "There are two explanations as to why it appears so often:\n",
    "\n",
    "+ It is the distribution of maximum uncertainty that matches a known mean and a known variance variance.\n",
    "+ It is the distribution that arises when you add a lot of random variables together.\n",
    "\n",
    "We will learn about both these in the next lectures.\n",
    "\n",
    "We write:\n",
    "$$\n",
    "X | \\mu, \\sigma \\sim N(\\mu, \\sigma),\n",
    "$$\n",
    "and we read \"$X$ conditioned on $\\mu$ and $\\sigma$ follows a normal distribution with mean $\\mu$ and variance $\\sigma^2$.\n",
    "\n",
    "When $\\mu=0$ and $\\sigma^2=1$, we say that we have a *standard normal* distribution.\n",
    "Let\n",
    "$$\n",
    "Z\\sim N(0,1).\n",
    "$$\n",
    "The PDF of the standard normal is:\n",
    "$$\n",
    "\\phi(z) := N(z|0,1) = \\frac{1}{\\sqrt{2\\pi}}\\exp\\left\\{-\\frac{z^2}{2}\\right\\}.\n",
    "$$\n",
    "The CDF of the standard normal is:\n",
    "$$\n",
    "\\Phi(z) := \\mathbb{P}(Z \\le z) = \\int_{-\\infty}^z \\phi(z')dz',\n",
    "$$\n",
    "is not analytically available.\n",
    "However, there are codes that can compute it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Here is how you can get the PDF of the standard normal\n",
    "Z = st.norm()\n",
    "fig, ax = plt.subplots()\n",
    "zs = np.linspace(-4.0, 4.0, 100)\n",
    "ax.plot(zs, Z.pdf(zs))\n",
    "ax.set_xlabel('$x$')\n",
    "ax.set_ylabel('$\\phi(x) = N(x|0,1)$');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# And here is the CDF of the standard normal\n",
    "fig, ax = plt.subplots()\n",
    "ax.plot(zs, Z.cdf(zs))\n",
    "ax.set_xlabel('$x$')\n",
    "ax.set_ylabel('$\\Phi(x)$');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.43612527 -0.05703598 -0.04627024 -0.46118661 -0.49279386 -0.79088583\n",
      " -0.12920929  0.75256318  0.6229063   0.01873487 -0.46471398  0.18066292\n",
      " -0.74157956  0.34460746 -0.36230173  1.48099636 -0.90627087 -0.55637405\n",
      " -2.17462141 -1.09649788  0.76476805  1.09289935 -0.50625711 -0.12461334\n",
      " -1.21297928  1.17312329 -0.97431629 -0.98653123  0.75700213 -0.20026159\n",
      " -1.56917003 -0.75361699 -1.45137459 -0.13810364 -0.03901237 -2.26211692\n",
      " -0.83048156  0.71788453  0.88455173 -0.92328948  2.13017222  1.24957006\n",
      "  0.79445727 -0.04416995 -0.50049125  0.01199451  0.12524146 -0.79580334\n",
      "  1.15942882  0.45406826  1.09812537 -0.28583102 -0.25190047 -0.9708433\n",
      "  0.1949996  -0.69410444 -0.02719637  0.60094259  0.25481908  1.06468463\n",
      "  0.27207085  0.63402875 -0.84608093  0.7268045   1.00426757  1.27172237\n",
      "  0.33306187 -0.69846422 -0.91866039 -0.52959734  0.88061054 -1.65643469\n",
      " -0.01495221 -1.24235849  0.49464076 -0.47988951  0.23835883  0.44706871\n",
      "  0.14277424  0.55018115  0.03020751 -0.80948161  1.96112865  1.6033296\n",
      " -0.11295146 -0.42068614 -0.05017649  0.71603266 -0.20363094  0.67463231\n",
      "  0.52657316  0.43471128 -1.90792719  0.41890973 -0.05175822  1.10102549\n",
      "  1.63129091 -0.46023109  1.03082201 -0.55126139]\n"
     ]
    }
   ],
   "source": [
    "# You can sample from the normal like this:\n",
    "print(Z.rvs(size=100))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Using the standard normal, we can express any normal.\n",
    "It is easy to show that:\n",
    "$$\n",
    "X = \\mu + \\sigma Z,\n",
    "$$\n",
    "follows a $N(\\mu,\\sigma^2)$ if $Z$ follows and $N(0,1)$.\n",
    "You must remember this!\n",
    "It is extremely useful and it will appear again and again.\n",
    "For example, using this relationship you can sample from any normal using samples from the standard normal.\n",
    "Let's take some samples exploiting this relationship and then compare the histogram to the true PDF."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEZCAYAAACAZ8KHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deZRcZZ3/8fe31yS9Zk86AcKWBRJ2FBAUWVRUQAQRXHGdGZVRxhmdzR+Ojnocx0E9OuOAC+6IioMKCoigIDuELWQjezqdTockvXenl+f3x3Nv0ml7q6XruVX1eZ1Tp27funXv93al65tnN+ccIiIiE1USOgAREckvShwiIpISJQ4REUmJEoeIiKREiUNERFJSFjqAyWRm/fjk2BY6FhGRPFILDDrnRswRVsjdcc1sELC6urrQoYiI5I3W1lYA55wbsVaqoEscQFtdXV3dvn37QschIpI36uvraW1tHbWmRm0cIiKSEiUOERFJSaITh5l92sycmT0dOhYREfESmzjM7Hjgk0Bz6FhEROSgRCYOMysBvg18C1gTOBwRERkikYkDuA5YCPxL6EBERORQieuOa2ZHAZ8B3u6cazOzsY4dr5+tBnCIiGRZohKH+SxxE3CXc+7/QscjknU9bfCra2HLnw/um3ksvOkbMOOocHGJpCBRiQP4AHAacNxEDnbO1Y/1elQiUalDkqGnFX7wZmh84tD9nS3w3TfANb+BmUeHiU0kBYlp4zCzWcB/AF8AOs2s3szq8cmtNPp5StAgRdLVvRe+f2mUNAzO+xRc8R24+KtQWQvtO+C7r4eWdaEjFRlXYuaqMrOTgJXjHPZF59w/pnDOfZpyRILr3w/feQ3sWAlWApf9L5xw5cHXtz8JP7gMeluhag588D6oWxguXil60ZQjraPV6iSmxAG8CLx6hMczwIZo+8Zg0Ymk66nvHUwal3/r0KQBsPBUePftMKUeOnfBfV8IE6fIBCUmcTjnOpxz9w9/APuA+LWNgcMUSc3+LvjTl/z2Ke+C5ZePfFzDyXDB9X77mR+rykoSLTGJQ6QgPXYjdDRDaSW88hNjH3vyO2H6InCDcP/ncxKeSDoSnzicc+c6504KHYdIynpa4c9f8dunvx/qFox9fGk5nPvPfnvVL6Hp2cmNTyRNiU8cInnr4f/2vanKq+Ds6yb2nhVXwOylfvu+z01ebCIZUOIQmQxde+Dhb/jtM/4GqmdP7H0lpfDqaKaddb+D7U+MfbxIAEocIpNh1W2wvx0qauCsa1N777KLYd4Kv/3kzVkPTSRTShwik+GZn/rn4y6FqWNOcPCXzODkd/ntF26Hvp7sxiaSISUOkWzbsxG2P+a3h4/ZmKjlbwYrhd42X2UlkiBKHCLZ9uzP/HNNAyw6O71zVM2CYy6IzndrduISyZKkTXIokjduuGeEQXrOcc1TP2Q68ETt+Txw74YJneu6Cxf/5c4TroT1d8H6u31j+7QZmQUskiUqcYhk0dyOF5jesxWA1bMvyuxkS14PFdUw2OfHdYgkhBKHSBYta/ktAC3TjmF31bGZnaxiGiy7xG8/+9MMIxPJHiUOkSwpGexnye67AViTaWkjFjeub3sU9mzKzjlFMqTEIZIlC1ufYFrfXhzGmtmvzc5Jj3wl1Mz326tuy845RTKkxCGSJUfu9cvBNtUsp6NybnZOWlIKS9/gt9ffk51zimRIiUMkSxbtfQiAzfVnZvfEx1zon7c9Bt1alEzCU+IQyYK6nu3MiHpTbZ5+VnZPfuQ5UFoBbgA23p/dc4ukQYlDJAuO2PswAF1l9TRXL8vuySuq4IgoGb2o6ioJT4lDJAuOjKqptkw/wy8Rm21xddWL94Jz2T+/SAo0clwkQ6WDvRzW6qc/31yfXjXViKPQh5jRdSzvBmhv4ge33znuGJERR6KLZIlKHCIZWtD2NOWDPTjMlzgmwZ6pi2it9N1y40Z4kVCUOEQyFH+RN1cvo7t8+uRcxIwtUW8tJQ4JTYlDJEOLoobxrPemGmZTdP6G9meo6O+Y1GuJjEWJQyQDNT1NzOz2U4FsmuTEsa3uNAasjFI3wGGtj0/qtUTGosQhkoEj9j0CQHdZHc3Vx03qtfrKqmisPSm67qOTei2RsShxiGRgYdtKALbXnoyz0km/3ra60/x1W5+a9GuJjEaJQyQDC6LE0Vh3ck6u11jrrzOzexNT+/bm5JoiwylxiKSppqeJ2t6dADTWnpKTa+6sOZ5+qwCgoe3pnFxTZDglDpE0xdVUvaVVtGS6aNMEDZRUsrPmeH/91pU5uabIcEocImla0ObbGRprT8pJ+0Zse1RdFVeTieSaEodImuL/8cftDrnSWOerxWZ3rtN4DglCiUMkHe07mR5No57rxNFUs4JBSilhkIa2Z3J6bRFQ4hBJzxY/7UdfSWX2p1EfR1/pNJqrlwKwsE3dciX3lDhE0hEljqaaFQyWlOf88o1q55CAlDhE0hElju056oY73PaonWNuxwuUDfQEiUGKlxKHSKq69sCuVcDBhupc21F7Ig6j1A0wv/25IDFI8VLiEEnVVj8/1YCV0VR9fJAQestqaak6BlA7h+SeEodIqrb5xNFcvYyB0inBwojbOea3PRssBilOShwiqdrul4ndUXNC0DCaalYAMK9jFeYGgsYixUWJQyQVA/3Q6KuGdkZf3KHsrFkOQOVAJzO6NweNRYqLEodIKnatgv5uAJqiL+5QWisX0BUtVTuv/fmgsUhxUeIQScW2x/xzTQMdlXPDxmJGU7VPXvPb1LNKcicxicPMzjKzu8ys0cx6zKzFzP5gZheFjk3kgKh9g4WnhY0jErdzzO9Q4pDcSUziAKYDa4GPA68DPgj0Anea2VUhAxM5YHu01vfC08PGEYnbOWZ2bdKEh5IzZaEDiDnn7gDuGLrPzH4NbMInkVtCxCVyQNce2LPBby88HdaFDQdgZ/VxDFJCCYPM61jF1vqXhw5JikCSShx/wTnXD7QCfaFjETlQTVVSBvNPDBtLpK+sipemHQ2ogVxyJzEljpiZleAT2hzgr4DFwN+Pcuy+cU5Xl93opKjF1VRzl0PFtLCxDNFUs5zZXeuZr8QhOZLEEset+BJGI/Ax4Ern3O/ChiRC4to3YnG34Pntz4FzgaORYpDExPEJ4GXAJcCdwK1mdvVIBzrn6sd64Ku5RDI3OAiNT/rthCWOeCDi1P5W6nu2BY5GikHiEodzbqNz7nHn3K+dc1cDdwHfiKqwRMLYvRZ62/x2QrrixvZMPYKe0moAVVdJTuTDl/Fj+K66s0MHIkUsrqaaNhNmHBU2luGs5EC33PntmvBQJl+iE4eZGXAusA94KWw0UtTiHlULTgOzsLGMIE4c89pfCByJFIPE9Koysx8BW4Angd3AfODdwHnAtVHXXJEwdkRrXiwIs3DTeHZWHwfArK71lA7uDxyNFLrEJA7gYeDt+C64dfiG7SeAS5xzvw4ZmBS5vm7YtdpvNyQzcTRHiaPU9TOrcz0QdgJGKWyJSRzOua8DXw8dh8hf2Pk8DEYF3oSWOLoqZtJWMZfa/c3M61gFXBY6JClgiW7jEEmEuJqq7nComhU2ljE01/hSx9wOtXPI5FLiEBlPY9y+cXLYOMbRXL0MUAO5TD4lDpHxxCWOhLZvxOJ2jhndm6G3PWwwUtCUOETG0tMGu9f77YS2b8TixGE4aHomcDRSyJQ4RMbS9DTgAIP5J4WOZky9ZTXsnXK4/yGuXhOZBEocImOJv4BnHQtTasPGMgE7o3aOA9VrIpNAiUNkLHnSvhGLe1axY2XYQKSgKXGIjKUx+gJOePtGrLn6eL+xd7NfsVBkEihxiIymcze0bvXbeVLi2FW1hEFK/Q+qrpJJosQhMpq4uqekDOblxxQe/aVTeGlaNHtvo6qrZHIocYiMJm4Yn7MMyqeGjSUF8YSHKnHIZFHiEBlNXOLIk2qq2K4DPatU4pDJocQhMpoDiSPZU40MF089QnsTtDWFDUYKkhKHyEjamqBjp9/Os8Sxu+oYKCn3PzQ9HTYYKUhKHCIjib9wSytgznFhY0nRQEkFzI265e5Q4pDsU+IQGUlcTTX3eCirCBtLOhqi6VHUziGTQIlDZCR52r5xQBz3jpXgXNhYpOAocYgM51zhJI7OXb6RXCSLlDhEhmtrhM4Wv52viWP2Miit9NuqrpIsU+IQGS5uUC6thNlLw8aSrrKhDeRKHJJdShwiw8VftPNWQGl52FgycaCdQz2rJLuUOESGy/f2jZgayGWSKHGIDHVIw3iyV/wbVxx/125o3R42FikoZem8ycwWA8cDc/DrarYAzzvn1mcxNpHca90G3dE6Fvle4pi9FMqmQH+PT4b1h4WOSArEhBOHmS0D/hp4CzA33h09u+iYZuBW4H+dc6uzGKdIbsSljbKpMGtJ2FgyVVru22m2P+5Hwh93SeiIpECMmzjM7Gjgi8BlQDfwAPAwsAF4CZ88ZgDHAGcA7weuNbPbgE865zZOTugikyBOHPNPgNK0CuTJ0nCyTxzqWSVZNJG/jBeA54BrgNucc51jHWxmVcAVwN9G752SYYwiuXMgceR5+0ZseAO52djHi0zARBLHlc652yd6wiixfA/4npldmnZkIrk2tGE8T9YYH1ecOLr3wr4tMH1R0HCkMIzbqyqVpJHN94rk3N5N0NPqt/O9YTw2azGUT/Pbqq6SLEm5EtfMrnTO3ToZwYhMphvuWTfm64tb7uYNwP6Safz3ykGcjX18XigphfknwtaHfeI4/rLQEUkBSGccx4/N7K+yHolIYHM7fEfAXdVLcFYaOJosGtrOIZIF6SSOm4H/NrN/GelFMzvTzB7IKCqRAOLEcWDp1UJxIHE8A4ODYWORgpByVZVz7v1m1gJ81sxmOeeuAzCzJcAXgEvx3XZF8ocbZE7nGgCaq/Nrxb9xxYmjt9W348w8Omw8kvfS6qjunPunaLDfl81sNtABvBc/EPB/gc9kL0SRyTe9eyuVA76necGVOGYcDRU1sL/dV1cpcUiGMpmr6ibgD8DbgA8APwOWOec+5JzbmY3gRHIlrqbqKa1m35SFgaPJspISLSUrWZVy4jCzcjP7KH7k+HnAU/iSRjmwLbvhieTGwYbxpWAFOPdnnDganwobhxSEdP5C1gP/hZ/Y8BLn3Gn4UsclwJ1mVp3F+ERyYm5n3DBeYO0bsbido+kZGBwIG4vkvXQSRym+aupE59wdANG4jkvwc1XdZ2azsheiyOQyN8CcjrhhvMDaN2Jx4ujrhN2axFoyk07iONY59x3n3CH9+pxzdwMXAEcCD2UjOJFcmNG9mfLBHqCAE8f0I2FKnd9WO4dkKOXE4ZzrGeO1R4FzSGNiQzM738xuNrO1ZtZlZtvN7DYzW5HquURSEbdvdJfV0VbZEDiaSWKmgYCSNVlvBYzW4XhFGm/9a+Bw4AbgIuDvop8fN7MzshehyKHmDB34V8izxypxSJZMZD2O851z96ZyUufctui9Fzjnfj/Bt33YObdr2LXvBjYB/wBcnkoMIhM1r/0FoICrqWJx4tj5LAz0+YWeRNIwkRLH78zsD2b2RrPxJ/CJuuteZmZ/BO6caCDDk0a0bx++F1eBdayXpCgZ7GN251oAdlYfHziaSbbgVP/c3wO7Xggbi+S1iYwcPxnf/fZXwG4zuwd4DD+OYw8HVwA8Ft+r6rzo57uAjFbDiUalLwd+Msrr+8Y5RV0m15fCN6vrRcpcHwDNNQWeOGoXQPVc6Gj24znmnxg6IslT4yYO59zzwGvM7EzgQ/i5qK4mWmd8CAPagNuA/3HOPZ5JYGZmwI34UtF/ZnIukdHMa18FQHvFHDorCrwXuZkvday9ExqfhNPeEzoiyVMTnqvKOfcw8HBUXXUqcBwwG59AWoDngZXDu+lm4EvAm4D3RA3uI8VUP9YJohKJSh0yqnkdPnHsLPTSRmzBKVHi0AhySV86s+MO4KuqHst+OJ6ZfQ74OPBR59zNk3UdkbjEUbAjxodriJbEbVkNvR1QqYkeJHVpzY5rZnOBK4FF+JlxnwLucc51ZRqQmX0G+GfgE865r2V6PpHRVPR3MKN7M1AEDeOxuGeVG/TTjyxKp+e8FLt0lo49B99bahq+XSP2kpl9NpMvezO7HvgU8Cnn3JfSPY/IRMzpWIPhcFjhd8WNTZvhp1nfs8G3cyhxSBrSGQAYN1S/Fz9AbxFwFb6X1VfM7MfpBGJmHwc+DfwG+L2ZnTHkcXI65xQZS9y+sWfqIvaXFVGVTdwtd4faOSQ96VRVLQe+7Jz73pB9W4Fbzex9wI1m9pBz7uspnvfi6PmN0WOoLfgEJZI1BxvGi6R9I7bgVHjuVl/iEElDOiWOdnyi+AvOuW8Dt+CnD0mJc+5c55yN8liURpwiY4obxoumfSMWlzj2bYWOlrCxSF5KJ3HcB7x+nNe1NqUkWlVvCzX7/WQFzcWWOOatgJKoskHVVZKGdBLHjcBZ0SqAI1kE7Eg7IpEcmNvhp9zot3Jaqo4NHE2OlU+Bucv9tqqrJA3pJI578VOK/JeZ3W9m7zCzZWZ2rJm9H/go8OWsRimSZXH7RkvVEgZLinCyv7i6SolD0pBO4/hngRPx81C9MnoMnX5kJbDPzJYDa5xz/RlHKZJlB9o3imXE+HALToUnvu1HkDtX2NPJS9alM3L8+njbzOrxkyCeFD1OBk4AfohPJn1mthZ41jn3zqxELJIpN3iwR1WxjBgfLi5xdO+BPRthppolZeLSGjkei6Y9vy96AGBmFfguu3EiOZmDXW1FgpvZtZHKgU4AmmpOCBxNILMW+6Vke1ph22NKHJKSjBLHSJxz+/FTkKi7hiTS/PbnAOgqn07rlAWBowmkpAQWnAYb7oXtj8FJV4eOSPJI1peOFUm6hvZnAWiqWVHcdfuHvcw/b5u0+UqlQClxSNGJSxw7irWaKhYnjl0vQG972Fgkr2S9qkokySr7WpnRvQWIShwF6oZ71o17TEV/PR/CMDfIz391O9vqXzbqsddduDib4UmeU4lDisr89ucBGLDS4lmDYxT7y6p5adpRwMFSmMhEKHFIUZkftW/snraY/tIpgaMJLy51KXFIKpQ4pKg0xO0btYVbTZWKHQcSx/N+IKDIBChxSNEwN3BgxHght2+kIh7HMrW/lelR24/IeJQ4pGjM7NpIxaBf3ViJw9s79XB6ymoBVVfJxClxSNFoaPPtG53lM2mrbAgcTUJYyYHqqnh8i8h4lDikaBwcv1HkA/+GUQO5pEqJQ4pG/MVYtPNTjSJOHDO7NlLR3xE4GskHShxSHNqbmd7jVzzeUavEMdTOmuUMUorhaGh/JnQ4kgeUOKQ4bH0IgL6SyqIf+DdcX+k0mquXArCgdWXgaCQfKHFIcdjiE0dTzYriXPFvHI21JwOwsE2JQ8anxCHFIUocjbWnBA4kmRrrfOKY2/ECZQM9gaORpFPikMLXtQea/cC/7dH/rOVQjbUn4TBKXb96V8m4lDik8G17FHAMWBk7a5aHjiaRestq2T3tGAAWqLpKxqHEIYVvy58BaK5epokNx7A9qq5S4pDxKHFI4TvQvqFqqrHEv5+G9ucoGewLHI0kmRKHFLbeDtjxNADb1TA+psbakwAoG+xlbscLgaORJFPikMK2/TFwA4Cxo/bE0NEkWlfFLPZMORxQt1wZmxKHFLaomop5K9hfVh02ljzQqHYOmQAlDilsceI44hVh48gT8TiXhrZnMDcQOBpJKiUOKVx93bD9Cb99xFlhY8kT8TiXyoFO5nSsCRyNJJUShxSuLQ/BQC9gsOjs0NHkhfYp89k3ZSEAh7c+FjgaSSolDilcG+/zzw0nw7QZYWPJI1vqXw7A4fuUOGRkShxSuDbc75+PfnXQMPLN1rqXAb6dQ/NWyUiUOKQwdbRAczTn0lHnhowk72yrP41BSihzfepdJSNS4pDCtOmP/rl8Ghz28rCx5Jneslqaq5cBcPi+RwNHI0mkxCGFaUPUvnHEWVBWGTaWPLQ1auc4Qu0cMgIlDik8zh1sGD9K7Rvp2Frv2zlmd61n2v6XAkcjSaPEIYVn93poa/TbahhPS1PNCvpK/EzC6l0lwyUqcZjZQjP7qpk9aGYdZubM7NzQcUme2Xi/f66eC3O0vng6Bkoq2F7nR5FrPIcMl6jEARwDXA10APcGjkXy1YFqqnPBLGQkeW1L3ZDxHM4FjkaSJGmJ40/OuTnOudcB3w0djOShgT7Y9IDfPurckJHkvbido2b/LmhZGzgaSZJEJQ7n3GDoGCTPbfkz7G/320efFzaWPPfStKNpr5jjf1h/V9hgJFESlThSZWb7xnoAdaFjlBxb+zv/vOBUqJkXNpZ8Z8bGGef47bW/DRuLJEpeJw6RQzgHa+/020suChtLgTiQOLY9Cp27wwYjiZHXicM5Vz/WA2gNHaPk0K7VsG+L316sxJEN2+pOY3/JVHCDsP7u0OFIQuR14hA5RFzaqDsc5h4fNpYCMVBSeWC2XFVXSUyJQwpH/MW25CJ1w82ijTNe6TdevBf6NFuuKHFIoWhvhsYn/bbaN7Jq04yzAYO+Ttj8YOhwJAESlzjM7AozuwI4M9r1qmifvg1kdOvvAhxU1mp98SzrLp9+cIbhuDpQilpZ6ABG8LNhP386et4CLMppJJI/4mqqYy6AsoqwsRSiJRfBtkdg3e/AfVlVgUUucSUO55yN8lgUOjZJqP1dB6dRVzXV5Ih/r22N0PRM2FgkuMQlDpGUrfst9HdDSTkce2HoaArTrMUw8xi/veq2sLFIcEockv+e+7l/PuYCmDo9bCyFygxWvMVvP/cLGNTsQMVMiUPyW9ceWH+P315xRdhYCt3y6Pfbtt23d0jRUuKQ/Lb6VzDYB+VVat+YbLOOgfkn+e3nhvdhkWKixCH5La6mWvoGqKgKG0sxiKurVv0S+veHjUWCUeKQ/NW24+CAtPgLTSbX8jcDBt17Dy6YJUUnieM4RAC44Z51Y75+SuOPeBWO7rI6bty0kMEtYx8vWVDbAIvOhs0P+NLe4teGjkgCUIlD8tbSFr+40LpZFzBYov8D5UxcultzB+zvDBuLBKHEIXlpRtdG5nauBmDtLP2vN6eOu8SPmenrhNW/CR2NBKDEIXnphJ1+ENq+KQtorD0xcDRFZup0WPp6v/3Ed8LGIkEocUjeKR/o4rhd/n+6z867HEz/jHPutPf5522PwM7nwsYiOae/OMk7S1t+R+VAJ/1Wwao5F4cOpzgd+UqYeazffvzbYWORnFPikPziHCfs/AUA62ZdSE95feCAipQZnP5+v/3srdDTFjYeySklDskr89ufY06n73b7zHxNMRLUiVdB+TTfSP7sT0NHIzmkxCF55cSdfqR4c9VSdlZrXfGgptYfnB/s8W+Bc2HjkZxR53fJG1P79nLs7t8DUWlDiwnlzGiDMecMXMjb+T60rOHWX9xCY92pEzrfdRcuzmZ4kmMqcUjeOGXHjylzffSU1rB21mtChyPAruql7KhZAcDLtt8cNhjJGSUOyQtT+vZx0o5bAVjZcDX9pVMDRySxxxdeA8CifY8wr/35sMFITihxSF44ZcdPqBjsoqe0mpUNV4UOR4bYOP0cmquWAnDGtpsCRyO5oMQhiVfZ38ZJTb7XztMNV9FbVhM4IjmEGY8c5rvmHrn3Iea2rwockEw2JQ5JvFN2/ITKgU56S6t4quHq0OHICDbOeCW7qnyD9xnbvhU4GplsShySaJX97Zy04xYAVs5/K71ltYEjkhENKXUctfdB5ra/EDggmUxKHJJoZ2y9kSkDHewvmcZTDW8LHY6MYcOMV9EyzU9D8srNX9G4jgKmxCGJNatzHSc1+Z5Ujx72XnrL6wJHJGOyEv505EcBWNi2kmUtdwYOSCaLEock0+Ag52/4IiUM8tLUI1XayBNb61/OupkXAHDO5q9R2d8eOCKZDEockkzP/JiG9mcB+MNRn2CwpDxwQDJRfzzyY+wvmUpV3x7O3PrN0OHIJFDikOTp2gP3/D8A1sx6LdvrTwsckKSio3Iujxz+AQBObPo5czrWBI5Isk2JQ5LFOfjVtdD1Er2lVfxp0UdDRyRpWDn/al6aeiQlDPK6df+PsoHu0CFJFilxSLI8+k1Y41f3+9Oij9FZOTtwQJKOwZIy7jr2egasjJndmzh/wxfVy6qAKHFIcmx/Eu7+lN8+4a08P/fSsPFIRpprjueBRdcCcFzLHRy369eBI5JsUeKQZOjeCz+/Bgb7YNZieMN/adr0ArBy/tW8OONcAM7b+B/M7HwxbECSFUocEt7+TvjxW2HfViibCm/5HlRWh45KssGMu4/9FK2VDZQP9nLZCx+ltmdH6KgkQ0ocElZfD/zkatj2KGBw6ddh7nGho5Is6i2r5TdLv0hvaRU1+3dx+aoPQ/vO0GFJBpQ4JJyBPvjZNbDpj/7nN95wcClSKSi7qpdy+7Ib6CuppL5nO3z/Uuh8KXRYkiYlDgmjaw/86ApY91v/82s+B6e9J2xMMqka607m10u/RL+VQ8sa+M5rYPf60GFJGpQ4JPd2rYabzoON9/ufz/tXOOsjQUOS3Ngy/UzuXPJ5KK2Al16Em86H9b8PHZakyFwB9602s311dXV1+/btCx1KUbjhnnVjH+Acy1p+y6s3/geVA530l1Ry9zH/ytrZr8tNgJIY1y1thZ++HTqawUrgVZ+Es/8OyipChyZAfX09ra2trc65+pFeV4lDcqK+eyuXr/owr1t/PZUDnbRXzOHW5TcqaRSrw06HD94PDaeAG4T7vwDfPBu2PBQ6MpkAJQ6ZVFW9LZyz6Su8c+XVHN76OADrZ57Hj0/8Hs016j1V1Gob4D13wpkf8aWO3WvhuxfBL94PzVoIKskSVVVlZtXA54G3APXAKuAzzrlfpXk+VVXl0IGqKueY3bmOE3f+jGW77qTM9QHQVjmP+476BzbOeGXAKCWJZnes5YINn2Nex+oD+zZMP4eVDVexve5UnJWO+f7rLlw82SEWlfGqqspyHdA4fgmcAnwC2ARcA/zSzC52zmlVmCQbHGR2x1qO2vMnluy+m5ndmw+81Fk+g5Xzr+LphrfSVzotXIySWC3VS7jlhO+ybNcdnN74ffyoT9EAAArdSURBVGZ0b+HovQ9w9N4H6CifxbpZF/DizFezs2Y5AyVqBwktMSUOM3s9cAfwZufcL6N9BjwAzHTOLUvjnCpxTAbnoL0JmldB8/Ow/QnY/CD0HPp73jPlcFY2XMWqORczUDolULCSb8wNcPSeP3Jq448OrMkS6yuppKnmBHbUnkhL1bG0TDuW1ikLuO41SwNFW5jGK3EkKXHchK+imuGcGxyy/wPAjcDxzrmUKj6VOCZgoB8Gev0I7r5O6OuG3nboafWP7j3Q0QKdLdC2w08Lsm8L7O8Y8XStlfNZP/N81s5+Lbuqlmi+KclIbU8jS3bfzeLd9zCnc+QxH/1WQdmMw6H+CKhbAFVzoGo2VM2CKXVQWQuVNVAxDcqroHwqlFVCSZn+fY4inxLHw4Bzzp01bP/LgUeAtzrnbh322ngZoQ6gri6Ntar7e2CwP/X3hTbu5znk9Uw/ezPfqGmlUFLGfmc49beQSWI4StwA5gb8M4PZ+Tc85AoTPzZfGFRUpfyu1tZW8N/HI/5BJ6mNYyYw0kCAPUNeT4drbW1tS/O9uRBntdagUaTFAQPRY386J8jje8+KYr7/hNy7G2V7UuX23rvTukwtMDjai0lKHDD2J/cXr41WjMoncampEO4lVcV871Dc9697z+97T1K9wkuMXKqYET3vGeE1ERHJsSQljlXAMjMbHtOK6Pn5HMcjIiIjSFLi+CV+0N/Fw/a/C1ibao8qERGZHElq47gTuA/4tpnNxA8AfDdwNqDFp0VEEiIxicM558zsTfgpRz6PL328gB8QqFXuRUQSIjHjOIpVIfSwSFcx3zsU9/3r3vP73pPUxiEiInlAJQ4REUmJShwiIpISJQ4REUmJEoeIiKREiSMLzKzazL5mZk1m1m1mT5jZJRN436fNzI3w2DnK8X9rZuvMrNfMNpjZJ0YYaZ9TGdz75lHu3ZnZmmHHjnbcX0/enY3PzBaa2VfN7EEz64hiOjeF959qZveaWaeZ7TWzW8xswQjHlZvZv5nZluizX2Vm78vqzaQo3Xs3s1Iz+7iZ3W1mjWbWZWarzewzZlYz7NhFY3z2QRerz+SzN7ObR7mnR0Y4NnGfPSRoHEeey3TlwguBoQtc/MVUs2b2r8C/AZ8D/gCcFW3PAP4xk+AzlO69XwZUDtu3Ar/2yv+NcPxPga8M27cxnYCz6BjgauAp4F5g3IQZM7NlwP3A48AVQBX+87zfzE52zg399/A/wNuAfwFWAm8EvmVm5c65b2bhPtKR7r1PBa4HfoL/rHcDpwOfAi4yszOdc8PXM/gK/vMfajVhpf3ZRzrwf/dDtY9wXBI/e3DO6ZHBA3g9fubey4bsM+BBYPU47/109N76cY6bCXQDXx22/3NAH7Aw3+59lPN9LTrf4mH7HfCV0J/1CPGWDNl+UxTnuRN8763ADqBqyL6l+DnqPzlk3/HRea8b9v4f4Sf+nJJP9w6U4lf0HL7/3dE5Lh6yb1G072OhP+ssf/Y3A/smcFwiP3vntOpONlyGn1f/9niH85/u94ClZnZcFq7xOmBKdM6hbsaXGlP93062ZO3ezawC/z+rB51zI63LkjhuyEqVqTCzcvz/HH/unOsccr41+EXLLh9yePyl9INhp7kZmA6cl04MmUr33p1zA865l0Z46fHoeWH6UeVOuvefokR+9qA2jmxYDrwwwj+kZ4e8Pp7VZjYQtRPcZGZzRriGw88gfIBzbj2+JDKRa0yGbNx77E34ktV3Rnn9XVEbSo+ZPWpmV6YYa5Icha+yGWnG52c59Pe2HNjpnNs9wnEQ7rPPtvhLcKTfyb+Y2f6oLeg+Mzs/l4FNkmoza47+7reY2ZfNrHrYMYn97NXGkblMVi7cAPwzvu5yP/AKfFvB+WZ2qnNu75BzdDnnekc4x95xrjGZsrlq43vx9b63jvDaj/CTYG4D5gMfAn5qZvOdc19N4RpJEf9eRlpjZg8w1cymOue6o2NHO27oufKWmR0FfAb4o3PugSEv9QI3AXcDO4EjgY8D95jZ5c65X+Y82Ox4BnganyRL8W0d1wLnmNkrnHN90XGJ/eyVOLIjpZULD7zg3PAi6B+inhV3Ax8G/j3Ta+RAxnGZ2UL8H893h1bdHDiJc+8YdvzP8Q3L/25mN0ZfsPloor+7kY5zY7yWN8xsNnAH0Akc8jk755qADw7Z9aCZ/QL/pfslfMeMvOOcu2HYrrvMbC2+s8BbgR8OPXykU4zxWk6oqipzWV250Dl3D9AEnDnsGlVmNrwXEvi6zlCrI2br3q/B/1scrZrqEFHV2A+BavKzqiau4x/td9ftnOsZcuxIx41VaskL5pdP+D1+JuzznXPbx3uPc64L+DlwdJR0CsUP8Wt8D/+7T+Rnr8SRuclYubCEQxeKX4XvrXT80IPM7BhGryvPhYzv3cwMnzjWOOceSuHa8TVz0UiZbRsZvW1qBYf+3lYB86Iv2eHHQZ6ujGlmM/DdWOcDF6TYISKfP/vRWPQ8/O8+kZ+9EkfmsrpyoZm9BpiL710T+y2+vvedww5/N9APhFqvJBv3/irgaCZY2gCIEtXb8f3eV41zeOJEddh3AJeb2bR4v5ktxv+P87Yhh/8f/kvlkGoc/Ge/D7/4WV4xs+n4ksZh+KQx4c8w+n1dDrw4Su+sfPUO/Pfx0L/7xH72auPI3IRWLjSz+4FXOedsyL6VwPeBtfjxGGcBfw+8CHwjPs4595KZfQH4lJm1Rtc7E/gkfnzDtsm8wTGkfe9DvBef/L4/0gXM7O+BJfhBj03APOBvomt8eEiVThBmdkW0eXr0/CozmwV0Oud+Gx2zGcA5t2jIW68HHgN+ZWb/ycEBgJs59LN/3sxuBr4Qlc7iQWDvAD4Ssn0nnXs3s6nAXcCJ+AbhaWZ2xpDTbo+rrMzsy/gv04eAFvy4juvwvdLeNFn3NVFp3v8R+O61P8F3jikFLgA+AjzMkIGOSf7sgw+kKYQHUAt8Hd/zowc/mvRNw465n2iYw5B9PwHW4xsG9+P/Id0AzBjhGgZ8LDq+F/8l/U8MGYiUT/ce7a+J7v32Mc5/MfAA/oujD/8/rXsZMlAs8P27UR6bhxyzeejPQ/afjk+IndF93QocNsJxFcBnga3RZ78a+EA+3jsHB/WN9vj0kGPfCzyKr8vvw48y/zXwitD3nsH9T8eXKDfjqyt78Cud/hswNV8+e63HISIiKVEbh4iIpESJQ0REUqLEISIiKVHiEBGRlChxiIhISpQ4REQkJUocIiKSEiUOERFJiRKHiIikRIlDRERSosQhkiNmNtXMtpvZ1uFrq5jZt6JlRK8KFZ/IRClxiOSI87OZXo+fTvxD8f5o5uP3Adc6524JFJ7IhGmSQ5EcMrNS/JrTc/DTg78fPyPy9c65z4SMTWSilDhEcszM3oifHvxe4Dzg6865vw0blcjEKXGIBGBmTwKnALcAb3P6Q5Q8ojYOkRwzsyuBk6If25U0JN+oxCGSQ9Ga8r+OHn3AW4AVzrnVQQMTSYESh0iOmNnL8e0ajwEXAQvxS4He6ZwLvoa2yESpqkokB8xsGXAHsA6/Jnuvc24D8G3gUjN7RdAARVKgEofIJDOzw4E/A/uBs5xzzUNemw9sAFY655Q8JC8ocYiISEpUVSUiIilR4hARkZQocYiISEqUOEREJCVKHCIikhIlDhERSYkSh4iIpESJQ0REUqLEISIiKVHiEBGRlPx/Y+C9xyz8lAwAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "mu = 1.0\n",
    "sigma = 0.1\n",
    "X = st.norm(mu, sigma)\n",
    "xs = np.linspace(mu - 6.0 * sigma, mu + 6.0 * sigma, 100)\n",
    "x_samples = mu + sigma * Z.rvs(size=10000)\n",
    "fig, ax = plt.subplots()\n",
    "ax.hist(x_samples, density=True, alpha=0.5)\n",
    "ax.plot(xs, X.pdf(xs))\n",
    "ax.set_xlabel('$x$')\n",
    "ax.set_ylabel('$p(x)$');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The reverse of the previous expression also holds.\n",
    "For example, if $X | \\mu, \\sigma\\sim N(\\mu,\\sigma)$, then the random variable\n",
    "$$\n",
    "Z = \\frac{X-\\mu}{\\sigma},\n",
    "$$\n",
    "follows a standard normal.\n",
    "You will be asked to prove this in the homework.\n",
    "\n",
    "You should also remember the mathematical form of the PDF of $N(\\mu,\\sigma)$ which is:\n",
    "$$\n",
    "p(x) := \\frac{1}{\\sqrt{2\\pi}\\sigma}\\exp\\left\\{-\\frac{(x-\\mu)^2}{2\\sigma^2}\\right\\} = \\frac{1}{\\sigma}\\phi\\left(\\frac{x-\\mu}{\\sigma}\\right).\n",
    "$$\n",
    "\n",
    "There is also a very nice relationship between the CDF of $N(\\mu,\\sigma)$, call it $F(x)$, and the CDF of the standard normal $\\Phi(z)$.\n",
    "It is:\n",
    "$$\n",
    "F(x) = \\mathbb{P}(X\\le x|\\mu,\\sigma) = \\mathbb{P}\\left(\\frac{X-\\mu}{\\sigma}\\le \\frac{x-\\mu}{\\sigma}\\right) = \\Phi\\left(\\frac{x-\\mu}{\\sigma}\\right).\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example: Infering the mean of a normal with a known variance\n",
    "\n",
    "Assume that we are performing an experiment $X_n$ that measures the acceleration of gravity and that we know that the measurement variance is $\\sigma = 0.1$.\n",
    "So, we have:\n",
    "$$\n",
    "X_n | g, \\sigma \\sim N(g, \\sigma^2).\n",
    "$$\n",
    "So, the model says that the measured acceleration of gravity is around the true one with some Gaussian noise.\n",
    "\n",
    "What is our state of knowlegde about $g$ before we see any data?\n",
    "Assume that it is adequately captured by:\n",
    "$$\n",
    "g | g_0, s_0 \\sim N(g_0, s_0^2),\n",
    "$$\n",
    "with known $g_0 = 10$, $s_0 = 0.4$.\n",
    "\n",
    "The situtation is captured in the following graph:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.43.0 (0)\n",
       " -->\n",
       "<!-- Title: infer_normal_mu Pages: 1 -->\n",
       "<svg width=\"170pt\" height=\"226pt\"\n",
       " viewBox=\"0.00 0.00 170.00 226.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 222)\">\n",
       "<title>infer_normal_mu</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-222 166,-222 166,4 -4,4\"/>\n",
       "<g id=\"clust1\" class=\"cluster\">\n",
       "<title>cluster_0</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"28,-8 28,-82 98,-82 98,-8 28,-8\"/>\n",
       "<text text-anchor=\"middle\" x=\"63\" y=\"-14.8\" font-family=\"Times,serif\" font-size=\"14.00\">n=1,...,N</text>\n",
       "</g>\n",
       "<!-- g -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>g</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"99\" cy=\"-128\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"99\" y=\"-123.8\" font-family=\"Times,serif\" font-size=\"14.00\">g</text>\n",
       "</g>\n",
       "<!-- Xn -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>Xn</title>\n",
       "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"63\" cy=\"-56\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"54.44\" y=\"-52.8\" font-family=\"Times,serif\" font-size=\"14.00\">X</text>\n",
       "<text text-anchor=\"start\" x=\"64.56\" y=\"-52.8\" font-family=\"Times,serif\" baseline-shift=\"sub\" font-size=\"14.00\">n</text>\n",
       "</g>\n",
       "<!-- g&#45;&gt;Xn -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>g&#45;&gt;Xn</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M90.65,-110.76C86.29,-102.28 80.85,-91.71 75.96,-82.2\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"78.99,-80.44 71.3,-73.15 72.77,-83.64 78.99,-80.44\"/>\n",
       "</g>\n",
       "<!-- g0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>g0</title>\n",
       "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"63\" cy=\"-200\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"56\" y=\"-196.8\" font-family=\"Times,serif\" font-size=\"14.00\">g</text>\n",
       "<text text-anchor=\"start\" x=\"63\" y=\"-196.8\" font-family=\"Times,serif\" baseline-shift=\"sub\" font-size=\"14.00\">0</text>\n",
       "</g>\n",
       "<!-- g0&#45;&gt;g -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>g0&#45;&gt;g</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M71.35,-182.76C75.71,-174.28 81.15,-163.71 86.04,-154.2\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"89.23,-155.64 90.7,-145.15 83.01,-152.44 89.23,-155.64\"/>\n",
       "</g>\n",
       "<!-- s0 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>s0</title>\n",
       "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"135\" cy=\"-200\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"128.78\" y=\"-196.8\" font-family=\"Times,serif\" font-size=\"14.00\">s</text>\n",
       "<text text-anchor=\"start\" x=\"134.22\" y=\"-196.8\" font-family=\"Times,serif\" baseline-shift=\"sub\" font-size=\"14.00\">0</text>\n",
       "</g>\n",
       "<!-- s0&#45;&gt;g -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>s0&#45;&gt;g</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M126.65,-182.76C122.29,-174.28 116.85,-163.71 111.96,-154.2\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"114.99,-152.44 107.3,-145.15 108.77,-155.64 114.99,-152.44\"/>\n",
       "</g>\n",
       "<!-- sigma -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>sigma</title>\n",
       "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"27\" cy=\"-128\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"23.11\" y=\"-123.8\" font-family=\"Times,serif\" font-size=\"14.00\">σ</text>\n",
       "</g>\n",
       "<!-- sigma&#45;&gt;Xn -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>sigma&#45;&gt;Xn</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M35.35,-110.76C39.71,-102.28 45.15,-91.71 50.04,-82.2\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"53.23,-83.64 54.7,-73.15 47.01,-80.44 53.23,-83.64\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x1a21849450>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gn = Digraph('infer_normal_mu')\n",
    "gn.node('g')\n",
    "gn.node('g0', label='<g<sub>0</sub>>', style='filled')\n",
    "gn.node('s0', label='<s<sub>0</sub>>', style='filled')\n",
    "gn.edge('g0', 'g')\n",
    "gn.edge('s0', 'g')\n",
    "gn.node('sigma', label='<&sigma;>', style='filled')\n",
    "with gn.subgraph(name='cluster_0') as sg:\n",
    "    sg.node('Xn', label='<X<sub>n</sub>>', style='filled')\n",
    "    sg.attr(label='n=1,...,N')\n",
    "    sg.attr(labelloc='b')\n",
    "gn.edge('g', 'Xn')\n",
    "gn.edge('sigma', 'Xn')\n",
    "gn.render('infer_normal_mu', format='png')\n",
    "gn"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can directly condition on the variables that are at edges of the tree, $\\sigma, g_0$ and $s_0$.\n",
    "That is, you can just treat them as constants.\n",
    "The joint probability density of the rest conditioned on these known parameters is (we read it from the graph):\n",
    "$$\n",
    "\\begin{split}\n",
    "p(x_{1:N}, g|\\sigma, g_0, s_0) &=& p(x_{1:N}|g, \\sigma) p(g|g_0, s_0)\\\\\n",
    "&=& \\left(\\prod_{n=1}^Np(x_n|g, \\sigma)\\right) p(g|g_0, s_0)\\\\\n",
    "&=& \\left(\\prod_{n=1}^NN(x_n|g,\\sigma)\\right)N(g|g_0,s_0)\\\\\n",
    "&=& \\left(\\prod_{n=1}^N\\frac{1}{\\sqrt{2\\pi}\\sigma}\\exp\\left\\{-\\frac{(x_n-g)^2}{2\\sigma^2}\\right\\}\\right)\\frac{1}{\\sqrt{2\\pi}s_0}\\exp\\left\\{-\\frac{(g-g_0)^2}{2s_0^2}\\right\\}\\\\\n",
    "&\\propto& \\exp\\left\\{-\\frac{\\sum_{n=1}^N(x_n-g)^2}{2\\sigma^2}-\\frac{(g-g_0)^2}{2s_0^2}\\right\\},\n",
    "\\end{split}\n",
    "$$\n",
    "where we have ignored all proportionality constants for convenience.\n",
    "\n",
    "From Bayes' rule, we have that our posterior state of knowledge:\n",
    "$$\n",
    "\\begin{split}\n",
    "p(g|x_{1:N}, \\sigma, g_0, s_0) &=& \\frac{p(x_{1:N}, g|\\sigma, g_0, s_0)}{p(x_{1:N}|\\sigma, g_0, s_0)}\\\\\n",
    "&\\propto& p(x_{1:N}, g|\\sigma, g_0, s_0)\\\\\n",
    "&\\propto& \\exp\\left\\{-\\frac{\\sum_{n=1}^N(x_n-g)^2}{2\\sigma^2}-\\frac{(g-g_0)^2}{2s_0^2}\\right\\}.\n",
    "\\end{split}\n",
    "$$\n",
    "\n",
    "That's pretty much the answer without the normalization constant.\n",
    "But in this particular case, we can actually match this posterior to a normal distribution by following a technique known as \"completing the square.\"\n",
    "It is straightfoward, but it takes a little bit of algebra.\n",
    "You take whatever is inside the exponentials and you try to form something like $(g-g')^2$ for some $g'$, whatever it turns out to be.\n",
    "Let's try it out (you can lump into an additive \"const\" everything that doesn't depend on $g$):\n",
    "$$\n",
    "\\begin{split}\n",
    "\\frac{\\sum_{n=1}^N(x_n-g)^2}{2\\sigma^2}+\\frac{(g-g_0)^2}{2s_0^2} &=&\n",
    "\\frac{s_0^2 \\sum_{n=1}^N(x_n-g)^2 + \\sigma^2 (g-g_0)^2}{2\\sigma^2s_0^2}\\\\\n",
    "&=& \\frac{s_0^2 N g^2 - 2s_0^2g\\sum_{n=1}^Nx_n + s_0^2\\sum_{n=1}^Nx_n + \\sigma^2 g^2 - 2\\sigma^2 gg_0 + \\sigma^2g_0^2}{2\\sigma^2s_0^2}\\\\\n",
    "&=& \\frac{g^2(s_0^2 N + \\sigma^2) - 2 g (s_0^2\\sum_{n=1}^Nx_n + \\sigma^2 g_0)}{2\\sigma^2s_0^2}+\\text{const}\\\\\n",
    "&=& \\frac{g^2 - 2 g(s_0^2\\sum_{n=1}^Nx_n + \\sigma^2 g_0)(s_0^2 N + \\sigma^2)^{-1}}{2\\sigma^2s_0^2(s_0^2 N + \\sigma^2)^{-1}} + \\text{const}\\\\\n",
    "&=& \\frac{g^2 - 2 g \\frac{1}{\\frac{N}{\\sigma^2} + \\frac{1}{s_0^2}}\\left(\\frac{g_0}{s_0^2} + \\frac{\\sum_{n=1}^Nx_n}{\\sigma^2}\\right)}{2\\left(\\frac{1}{s_0^2} + \\frac{N}{\\sigma^2}\\right)^{-1}} + \\text{const}.\n",
    "\\end{split}\n",
    "$$\n",
    "Ok, it takes a bit more algebra than usual.\n",
    "Now, we put this back into the exponential (with the minus sign in front of it), and we observe that it gives a normal for the posterior:\n",
    "$$\n",
    "p(g|x_{1:N}, \\sigma, g_0, s_0) = N\\left(g\\middle| \\frac{1}{\\frac{N}{\\sigma^2} + \\frac{1}{s_0^2}}\\left(\\frac{g_0}{s_0^2} + \\frac{\\sum_{n=1}^Nx_n}{\\sigma^2}\\right),\n",
    "\\left(\\frac{1}{s_0^2} + \\frac{N}{\\sigma^2}\\right)^{-1}\n",
    "\\right).\n",
    "$$\n",
    "Not very pretty. But it is what it is. Let's experiment with this."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1a207bcc50>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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SJJRM8rLiMVSn805FnNmTCnLUEUiEhYKJMmo6IAC5lZMpKQgeS+ppCCPuRUTiZboeCSRXKNp35Jx8yonARxxHFIs5syZPuHQehHJLaaLYXWfmVVHo9FodXV10KVktSPO1DClTD0jkX6stLSUmpqaGncvTbZePSQJTHRAAZedOTboMkQkJLQPSUREQkGBJCIioaBAEhGRUFAgiYhIKCiQREQkFBRIIiISClkTSGY2zcyeMrN3zGy/ma0ysyld3NbM7Goze87Mas1sX+K5zu/rukVEpGuyIpDMbCqwhvhxU5cDs4ARwFozO74LT3ELsAT4EzATmAMY8IRCSUQkHLLiTA1m9gRQDrzb3esSy0qBrcBj7n55mu23A6+5+/Q2ywYCbwI/d/dZ3ayn52dq2L499fqRI2HgwPjjlhZ47bXU7UePhuLi+OOmJnj99dTtx4yBwsL44/p62LMndftjj4X8xHHUBw/C3r2p248bB62XIT9wAKqqOm9rFm/fqqYG3n678/b5+fF6Wr39dnybzhQWxl9vq6qqeE2dKS6Ov5+t9u6Nv+bODBwY/7xa7dkTf087M3gwDB9++OfXX49/Zp0pLY3fWr32Wvx3ojPDhsGQIYd/Tve7NmIEDBoUfxyLwc6dqduPGgUlJfHHzc2wa1fq9mVlUJQ4e3tDA+xOc62rtr9rdXXwxhup248dC5HEd+t0v2sA48cffrx/P7z1Vudt8/LguOMO/1xdHb91pqAAjjnm8M9vvgm1tZ237/i7tm8fvPNO5+0HDIB3vevwz+l+1wYNin++rf7xD2hs7Lx9NApDhx7+edeu+GfcUdv3sBvSnakBdw/9DagF/ifJ8oeBd4C8NNtvAX7TYVkE2A/891HUUx2NRr1HIPXtV7863LaqKn37NWsOt//b39K3f/HFw+1///v07V9//XD7lSvTt29oONz+vvtStx00qP17853vpG4/blz79jfemLr9aae1b3/11anbV1a2bz9zZur2l13Wvv3ZZ6duf9117duXl6duf+ut7duXlaVuv2hR+/YFBanbP/DA4bb796f/bB9//HD7bdvSt9+w4XD7DRvSt9+27XD7xx9P337//sPtH3ggdduCgvbvzaJFqduXlbVvf+utqduXl7dvf911qduffXb79pddlrr9zJnt21dWpm5/9dXt2592Wur2N97Yvv24ccnbHaVo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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Get the true acceleration of gravity from scipy\n",
    "import scipy.constants\n",
    "g_true = scipy.constants.g\n",
    "# Generate some synthetic data\n",
    "N = 10\n",
    "sigma = 0.2\n",
    "gs = g_true + sigma * np.random.randn(N)\n",
    "fig, ax = plt.subplots()\n",
    "ax.plot(gs, 'o', label='Data')\n",
    "ax.plot(range(N), [g_true] * N, 'r--', label='True $g$')\n",
    "ax.set_xlabel('$n$')\n",
    "ax.set_ylabel('$x_n$')\n",
    "plt.legend(loc='best')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The posterior of g is N(9.75, (0.06)^2)\n"
     ]
    }
   ],
   "source": [
    "# Our prior state of knowledge\n",
    "g0 = 9.8\n",
    "s0 = 0.2\n",
    "G_prior = st.norm(g0, s0)\n",
    "# We shoed that the posterior for g conditioned on data is a Gaussian with mean\n",
    "gn = 1.0 / (N / sigma ** 2 + 1.0 / s0 ** 2) * (g0 / s0 ** 2 + gs.sum() / sigma ** 2)\n",
    "# And standard deviation\n",
    "sigman = np.sqrt(1.0 / (1.0 / s0 ** 2 + N / sigma ** 2))\n",
    "print('The posterior of g is N({0:1.2f}, ({1:1.2f})^2)'.format(gn, sigman))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEDCAYAAADOc0QpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3dd3xUVfr48c+ZzKRXQg8l2CgCgoaiSFNAQVBAEFYQYf25lnVXLIirgoDu2mEVXde2X1xFQdDgWkFXsLAo0pViowkkICG9z8z5/XFnJj2ZJHcymeF5vxyTufWcmfDMmeeee47SWiOEECK4WPxdACGEEOaT4C6EEEFIgrsQQgQhCe5CCBGEJLgLIUQQsvrjpEopO8YHS44/zi+EEAEqFnBqreuM3cofXSGVUk5AxcXFNfm5hRAiUGVnZwNorXWdWRe/tNyBnLi4uLisrCw/nV4IIQJPfHw82dnZXmU8JOcuhBBBSIK7EEIEIQnuQggRhCS4CyFEEJLgLoQQQchfvWWEEEB+fj45OTnY7XacTqe/iyP8wGKxYLVaiY2NJSoqyrTjSnAXp529GXuJskXRKbaT38rgdDo5duwYubm5WCwWbDYbISEhfiuP8J/S0lIKCgrIysoiJiaG9u3bY7E0PqkiwV2cVo7kHuHaD64lwhrB+xPfp0V4C7+UIzs7m9zcXFq2bEliYqIp/5hF4HI6nWRkZHDy5Emys7NJSEho9DHlL0qcVvae2otd28ktzeX1Pa/7rRx5eXmEhobSsmVLCewCi8VCy5YtCQ0NJS8vz5xjmnIUIQLE0dyjnt9X7FtBXok5/5Dqy+l0YrVaUUr55fyi+VFKYbVaTbv2IsFdnFaO5B3x/J5bmstbP77lx9II4TsS3MVp5Wie0XK3WWwA/Hv3vymyF/mzSEL4hAR3cVpxB/fp3adjtVjJKMrg3Z/f9XOphDCfBHdx2tBacyzvGAB9W/flqjOvAuD/dv8fDqfDn0UTlRw8eBClFMuWLfN3UQKWBHdx2jhZeJJiRzEASTFJXNv9WsBozZfPxQv/a9euHZs2beKKK67wd1EClvRzF6cNd0oGoEN0B0IsZTcNZRRm0Dm2sz+KJcpxOp04HA7CwsIYOHCgacctLi4mLCzMtOMFAmm5i9OGu3WeEJZApC2SsJAwYmwxAGQUZfizaEFnwYIFKKXYvn07V1xxBdHR0SQmJnLLLbdU6MetlGL27Nk8/fTTnHXWWYSGhrJx48Ya0zKrV68mJSWFiIgI4uLiGDt2LLt27aqwzcyZM4mPj2fbtm0MGzaMqKgobrrppqaodrMiLXdx2nD3cU+KTvIsS4xIJLc0l4zC5hHc7Q4nadnNp/dOu7hwrCENbwNOnDiRadOmMXv2bL755hsWLVrE4cOH+eCDDzzbrFq1iqSkJB599FGio6M588wzcTiqXgNZtmwZs2bN4sorr+TBBx8kNzeXRYsWMWjQIDZv3kz37t092xYVFTFx4kT+/Oc/M3/+fGw2W4PrEKgkuIvThrvlnhRTFtxbhLfgYM7BZtNyT8suYvDj6/1dDI8v7xlOxxaRDd5/6tSpPPzwwwCMHDkSm83Gvffey6ZNm7jwwgsBIxB/+umnxMbGevY7ePBgheM4nU7+8pe/kJKSwpo1azw3fw0fPpwzzzyTRYsW8eabb3q2Ly4u5q9//SvTpk1rcNkDndcfyUqpYUqpdUqpLKVUgVJqj1LqD74snBBmcufcK7fcwbjYKsw3derUap9//vnnnmWXXnpphcBenX379pGens60adMq3NXbrl07Ro4cyfr1VT8QJ0yY0JiiBzyvWu5KqeuBV4CXgMVAKdANCPVd0YQwV3VpmZYRLQGaTVqmXVw4X94z3N/F8GgXF96o/du2bVvheZs2bQDIyCh7vdu1a1fncU6dOlXt8dz7lz8eQGxsLJGRDf/GEQzqDO5KqY7A88B9WuvHy636r89KJYTJSp2lpBekA0ZPGbfEcKPl3lzSMtYQS6PSIM1Nenq6J6ADHD9+HIDExETPMm/G13Fvn56eXmVdWlpaheN5e8xg501a5gbXz6W+LIgQvpSen45TGwMydYgpF9xdaZnm0nIPNitWrKj2+dChQ+t1nK5du9K+fXuWL1+O1tqz/Pjx43z66adccskljS9skPEmLTME2AtMVErNB84C0oDXgfla6xIflk8IU7jz7QpFu6iyNIC75X6q6BRaa2nxmWzFihVYrVaGDBnC5s2bWbhwIWPGjPFcTPWWxWLh0UcfZcaMGYwfP54bb7yRvLw8Fi1aREhICA8++KCPahC4vAnu7V2PpcA8YDdwCfAXoCNQ5XK0UiqrjmPG1a+YQjSOO9/eJqoNtpCybnHunHuhvZACewFRNvOmOROQmprKfffdx5IlSwgNDWXWrFk89dRTDTrWddddR1RUFI888giTJk0iNDSUIUOGsHLlSrp27WpyyQOfN8HdAsQAv9Nau79jbVBKRQB3K6Ue1Fr/7LMSCmGC6nrKQFlaBozUjAR3cyUnJ/Phhx/WuL58iqXyftWtmzhxIhMnTqz1nDIejcGbnLs7Gbm20vKPXD/Pr7yD1jq+tgeQ3YgyC1Fvnj7utQX3ZnJRVQgzeBPcv6thuTs5KVO2i2bP3XIv31MGICwkjGhbNCAXVUVw8Sa4v+P6OabS8jGABr41tURC+ICnj3tMUpV17ry73MhkngULFqC1Jj4+3t9FOW3VmXPXWn+slPoIeE4p1ZKyC6q3A//UWh/ycRmFaJRCe6En5VI5LQPNbwgCIczg7dgyk4GFwD1AK+Aw8ADweG07CdEcuCfogOqDu/R1F8HIq+Cutc4H7nY9hAgo7uButVhpHdm6ynrPXaoS3EUQkfHcRdDLKjZuu0gIS8Ciqv7Je8aXkbSMCCIS3EXQyynJASAurPp752RkSBGMJLiLoJddbNxWERta/bCy5YcgECJYSHAXQc8d3OtquRfaCykoLWiycgnhSxLcRdDLLvEuuINcVPU199yq9fXPf/5ThhWoJwnuIuh5Wu6hNQT38LLgfrJI8u7NkQT3+pPgLoJeTnHtF1TDreGBPwTBV3+HA1/UvP7AF8Y24rQhwV0EvbrSMhAENzIlnQ+rZlYf4A98YaxLqjLGn0+99957nHfeeYSFhZGcnMyjjz5aZaTH5557jsGDB9OqVSuio6Pp06cPzz//PE5n2ZBVycnJ7Ny5k88//xylFEophg0bBsBvv/3GLbfcQvfu3YmKiqJdu3aMHj2abdu2NWVVmyVv71AVImB5esuE1TwJc2J4IodyDgVuX/cuQ2DyMiOIT15mPIeywF5+WRNYt24d48eP5+KLL2bFihXY7XYee+wxTpw4UWG7/fv3c91115GcnExISAibN2/m7rvv5tixYzz00EOAMSb8lClTiI6O5h//+AeAZ0LtU6dOERISwqJFi2jdujXZ2dm8+uqrXHTRRWzbto0ePXo0WZ2bGwnuIqg5tbOsn3sNOXcIgpY7VA3w4JfADjBv3jzat2/PunXrCAsLA2DUqFF06dKlwnblJ+5wOp0MHToUh8PB4sWLWbRoEUop+vbtS2RkJLGxsQwcOLDC/l27duXZZ5/1PHc4HIwePZpzzz2Xl156iSVLlviwls2bpGVEUMsrzfPMnVprWiY8SG5kcgf4V8cZDz8E9vz8fL799lsmTZrkCewAcXFxjBs3rsK227ZtY+LEibRv3x6bzYbNZmPevHlkZmZWaeVXR2vNyy+/TEpKCvHx8VitVkJDQ/npp5/Yt2+f6XULJBLcRVBzp2TAy5x7oKZlmpHMzEy01rRt27bKunbtyuavPXjwIIMHD+bXX3/lySef5Msvv+Tbb7/l/vvvB6CwsLDOcz355JPceOONDBw4kDfffJNvvvmGb7/9lvPOO8+r/YOZpGVEUHP3lIHTIC0DZTn2698znvshLZOQkIBSivT09Crr0tLSPL+/++67FBQU8Pbbb9OpU6cKy731xhtvMHz48AqpGYCMjIzTfix5abmLoOZuuYeokFrnR20ZHgSDh1W+eFo+B19bN0mTRUVF0b9/f95++22Ki4s9y3Nycnjvvfc8z903M4WGhnqWFRUV8dprr1U5ZlhYWLUtcaVUhf0BPv74Y44cOdLoegQ6Ce4iqJXvBlnbnZEBPwRBTb1i/BTgH3roIY4ePcqoUaNYs2YNq1ev5pJLLiE6OtqzzciRI7HZbFx77bV8/PHHrFq1imHDhmGz2aocr2fPnuzcuZNVq1axZcsWfvjhBwCuuOIK1q1bx4IFC/jss89YsmQJ119/PUlJVcftP91IcBdBzZ2WqWnQMLeAH4Lg6Laa0y/uAH+06fp+jxw5kjVr1pCVlcWUKVO46667mDx5Mr///e8923Tv3p1Vq1Zx8uRJJkyYwJw5cxg7diz33ntvleM9+OCDDB48mFmzZtGvXz9uuukmAB544AFuv/12XnzxRcaOHcuqVat46623OOuss5qsrs2VqnxTQZOcVKmsuLi4uKysrCY/tzi9vLjrRZZuX8p5rc7j9TGv17hdQWkBA94YAMDyMcvp3aq3T8t16JAxO2Xnzp19eh4RWOr6u4iPjyc7Oztba13nBQVpuYugVteIkG4R1gisFqN/gbtfvBCBTIK7CGp1DRrmppTypG5yS3J9Xi4hfE2Cuwhq3owr4+YO7uW7TwoRqCS4i6DmuaBay7gybp7gLmkZEQQkuIug5m1aBiAmLAaQtIwIDhLcRVCrV1rGJi13ETwkuIugpbX2urcMlKVuJLiLYCDBXQStQnshpc5SwLu0jOTcRTCR4C6CVvkg7U3LPSbUyLlLbxkRDCS4i6Dl7XC/btJyF8FEgrsIWu7grlCeCbBr4865S28ZEQwkuIug5e4pExMaQ4glpM7t3WmZ3JJcz+xNIjDs27ePBQsWcPDgQZ8cPzk5mZkzZ/rk2L4ik3WIoFWfnjJQlpbRaPJK8+ocSVI0H/v27WPhwoUMGzaM5ORk04+fmprqmZQ7UEhwF0GrPjcwQcVhgXNLciW4C4qLiwkLC6Nv376mH9PXJC0jglZ9bmCCikMU+KvHjN1p52je0WbzsDvtDarHggULUEqxfft2rrjiCqKjo0lMTOSWW24hLy/Ps11+fj533XUXnTp1IjQ0lE6dOjFnzpwqsy6tWrWK/v37ExsbS3R0NGeffTZ33HEHAMuWLWPChAkADB8+HKUUSik2bNjg2f+1116jX79+REZGEhcXx/jx4/npp58qnGPYsGH06dOHTz/9lH79+hEeHs4jjzwCVJ+W2bFjB1dccQVxcXFERETQr18/UlNTK2yzbNkylFJ88sknTJ8+nRYtWtCtW7cGvab1JS13EbTqM64MQLQtGoVCo/3WY+Z4wXEuf/tyv5y7Oh9f/TFJ0Q2f1WjixIlMmzaN2bNn880337Bo0SIOHz7MBx98gNPpZNy4cWzcuJH58+fTv39/zzY7d+5k7dq1KKXYuHEjU6ZM4dZbb+Xhhx8mJCSEAwcOsGXLFsCYjemxxx5j7ty5PPfcc5x//vkA9OjRAzAm+nj44Ye5+eabeeihh8jOzuahhx5i0KBB7Ny5s8Kk3UeOHOGGG27g/vvv5+yzzyYmJqbaeu3evZuLL76YTp068c9//pPo6GhefPFFJk6cyL///W+uu+66CtvPmjWLq6++mpUrVzbZxN0S3EXQqm9axqIsRIdGk1uSKz1mTDJ16lQefvhhoGxavXvvvZdNmzaRlZXF+vXrWbp0Kbfddptnm5iYGGbPns26deu47LLL2LRpE3FxcVUmwf5//+//AdCqVSvOOeccwAjoAwcO9Gxz+PBh/va3v3HXXXfx+OOPe5YPHjyYs88+m8WLF/PEE094lmdkZPDuu+8yaNCgWuu1aNEitNasX7+eNm3aADB27FhSUlK49957mTZtGhZLWWJk9OjRPP300/V+/RpDgrsIWvVNy4CRd88tyfVby71NZBs+vvpjv5y7Om0i2zRq/6lTp1Z5fu+99/L5559z6tQpAKZPn15hmxkzZjB79mzWr1/PZZddxoABA8jKyuKaa65h+vTpXHTRRbRs2dKr869btw673c60adOw28tSTK1bt+b888/n888/r7B9q1at6gzsAOvXr2fkyJGewA7GnADTp0/nzjvv5Mcff6yQfnGnjZqSBHcRtOrbWwaM4H6Uo37LuVst1kalQZqbtm3bVnjuDoYZGRlkZmYSFhZGfHzFGeMSEhIICwsjI8OYy3bw4MGkpqbyzDPPMHnyZEpLS0lJSWHhwoWMHj261vMfP34cgD59+lS7vkuXLhWel0/R1ObUqVNV6lZ+f3fZ63tcM0lwF0GrocEd5C5Vs6Snp1do3bqDbWJiIhaLheLiYrKysioE+MzMTIqLi0lMLJu0fPz48YwfP56SkhI2btzIokWLuPLKK/n+++/p2rVrjed3t/DXrFlDUlLVD83KvVaUUl7VKzExkfT09CrL09LSPOsbclwzSW8ZEbTcAdrbnDvIyJBmW7FiRbXPhw4dyiWXXALA669XnLjc/dy9vrzQ0FCGDx/OggULsNvt7NmzBygL0pUvVo4aNYqQkBD2799PSkpKlUevXr0aVK9LLrmETz75xPNhBcYopG+88QZJSUm1fuA0FWm5i6BU7Cim0G78Q69Py90zeJgEd1OsWLECq9XKkCFD2Lx5MwsXLmTMmDFceOGFaK0ZMWIEd999N9nZ2fTv35/NmzezaNEiLrvsMkaOHAnA/PnzOXr0KJdeeilJSUlkZGTwxBNPEB8fz4UXXggYF1KVUrz88svExsYSFhZG165d6dKlC/PmzWPu3Lns37+fkSNHEhsbS1paGhs3bqRbt26ei7n1MX/+fN5//30uueQS5s2b5+kts2XLFpYvX+6Xlnpl0nIXQal8ztzbrpCATJJtstTUVLZu3cqECRN46qmnmDVrFitXrgSMVMW7777LbbfdxgsvvMCYMWN44YUXuP3220lNTfUEyAEDBnDs2DHmzJnDqFGjuPXWW2nTpg2fffaZJ+/duXNnFi9ezNatWxk6dCj9+vVj69atgNEVcvny5ezcuZNp06YxevRoHnjgAbKyshgwYECD6tW9e3e++uorkpOT+cMf/sCkSZNIT08nNTWVa6+91oRXrvGU1rrpT6pUVlxcXFxWVlaTn1ucHn7O/JkJ/zF6KGy4ZgOJEYl17GF4addLPLP9GXq36s3yMct9Vr5Dhw4BRlAKRgsWLGDhwoVkZmZWuWAqalbX30V8fDzZ2dnZWus6X1RpuYug5O4GCfVrucuY7iJYSHAXQcndUybKFoXNYvN6P0nLiGAhwV0EJXdwr+/gX+V7y/gjZRksFixYgNZaUjJ+JMFdBCV3y7u+wd2dlil1llLkKDK9XEI0FQnuIii5uzLWJ98OVYf9FSJQSXAXQckd3GNs1Y/qV5PywV0uqopA1qDgrpRaoJTSSqkdZhdICDN40jKNaLnLjUwikNU7uCulzgXmAsfr2lYIf/GkZeqZc7eF2IiwRgCSlhGBrV7BXSllAV4BXgb2+aREQpjAnVJxXyCtDxmCQASD+rbc7wA6APf7oCxCmKahvWXK7yPBXQQyrwcOU0qdASwCpmmtc5rDwDhC1KShvWVAgrsIDl4Fd2VE8peAtVrrNV5sX9egMd4P0ydEA5jScpfeMiKAeZuWuRFIAf7kw7IIYYoSR4nnBqQGBXcZ071RlFJePQ4ePOjvoga1OlvuSqmWwOPAI0C+Usp9P7EVCHE9L9Jae27nq2vEMlfLXlrvwifKB+WGBHf3BdWA7C2TmQmrV0N6OrRtC5MmQUJCkxZh06ZNFZ7PnTuXH3/8kdTU1ArL/TH13OnEm7RMB4xA/IjrUVkm8Bhwr4nlEqLBygf3hvSWCcicu9Ywfz48+SSEhEBBAURGwp//DHffDYsWQRNdJxs4cGCF5+45USsvr0lxcXGV6e9E/XmTlvkZGF7NYyfwi+v3F31VQCHqq6ETdXj2CcTgPn8+LF4MRUWQn28E+/x84/nixcb6ZmjBggUopdi2bRvjxo0jNjaWyy+/nJkzZ5KcnFzj9pXt3buXyZMn07JlS8LCwujduzdvvPGGV2VwOp0sXryYrl27Eh4eTt++ffniiy+49NJLufTSSxtbRb+ps+Wutc4DNlRe7r5oqrWusk4If3IH5VBLKGEh9W8BBlxaJjPTaLEX1TDQWUGBsf6uu6CZjtI4ceJEZs6cyezZs3E4HF4HZoBdu3YxaNAgunXrxtKlS0lMTGTVqlVMmzaNwsJCbrjhhlr3v+GGG3jzzTeZM2cOQ4YM4fvvv2fKlCmUlpbWuW9zJnOoiqDT0KEH3AKut8zq1UYqpjYhIbBqFdx4Y9OUqZ5uvPFG7r+/7PaZ+gT3u+++m5YtW7JhwwaioqIAY2LskydPcv/99zNr1iwsluqTFCtXrmTZsmV88MEHjBkzBoCRI0dy4MABli5dSkpKSiNq5V8NHjhMaz1Ma93HzMIIYYaGDj3g5v5QKLAXUOosNa1cPpOebrTOa1NQYGzXTE2YMKFB+xUVFbF+/XomTpxIWFgYdrvd8xgzZgzHjx9n376ab6Z/9NFHGTFihCewu5199tkAp2dwF6K5aszQA5X3C4jUTNu2xsXT2kRGGts1Uw3tOZORkYHdbmfx4sXYbLYKjz/84Q8AnDx5stp909PT2bFjB1dddVWVdb/++iuJiYl06dKlQeVqDiQtI4JOY25gqrxfbkkuLcJbmFIun5k0yegVUxuHAyZPbpryNEDli6Th4eEUFxdX2a5yoE5ISMBisTBr1ixuvvnmao/dtWvXapcfOXIEgPbt21dYrrXmk08+4YILLvC6/M2RBHcRdBoz9AAE4JjuCQlGd8fFi6tPz0RGwp13NtuLqdVJTk7mxIkTHD9+nDZt2gBQUlLC2rVrK2wXGRnJ0KFD2bFjB3369MFq9T6ktWrVCqBK2mb58uXs2LGD++67r5G18C8J7iLoNHSiDrcIawRWixW70x443SEXLTJ+Vu7n7nAYgd29PkBMmTKF+fPnM3XqVObMmUNRURHPPPMMDoejyrZ///vfGTx4MMOGDeOmm26iU6dOZGVlsW/fPjZv3szbb79d7Tk6depESkoKjz/+OC1atKBbt27897//5V//+hcA/fr182kdfU1y7iLoNLa3jFIq8Pq6KwUPPQTHjsGSJbBwofEzLc1YHmAD/XXp0oV3332XrKwsJk2axJw5c5g8eTIzZsyosm3v3r3ZunUrZ5xxBnPnzmXkyJHcdNNNfPzxx4wYMaLGcyilWLlyJQMGDGDOnDlMnTqV3377jblz52K1WhkyZIgvq+hzyh8zvCulsuLi4uKysuoaX0yI+pv83mT2ndrH3Sl3c/251zfoGFeuuZID2Qe4f8D9TO021eQSwqFDhwDo3Lmz6ccWDZebm8vFF19Mz549Wb58eZOfv66/i/j4eLKzs7PrGuIFJC0jgpA7T97QC6oAcaHG0EfZxdmmlEk0P1u2bCE1NZVBgwYRERHBvn37ePrppykqKuKpp57yd/EaTYK7CDqN7S0DMjLk6SAvL4+PPvqIpUuXUlRURIcOHRg3bhzz5s2jZcuW/i5eo0lwF0HF4XSQW9q4nDtIy/10MGzYMLZt2+bvYviMXFAVQSWvNM/ze0NvYgKIC3MF9xIJ7iIwSXAXQaWxY7lX3jcg+rkLUQ0J7iKomBbcJecuApwEdxFU3BdTLcpCpK2O8VZq4UnLSM5dBCgJ7iKolB80zKIa/uft65uYLBYLdrsdf9xnIponrTV2u73G4YnrS4K7CCqNHXrAzd1yL3YUU2SvYRKMRoiOjqakpITffvsNp9Np+vFFYHE6nfz222+UlJQQHR1tyjGlK6QIKo0desDN3RUSjNRMuDW8Ucercvy4OAoKCsjIyCAzMxObzUZIXRNuiKDkcDgoLS3F6XQSGxtLXFxc3Tt5QYK7CCqNnajDrfyHQ05JDm2i2jTqeJVZLBaSkpKIj48nJycHu90uLfjTlM1mIyIigri4OCLrGpe/HiS4i6DS2Ik63Mp/OPjyompUVJRnajghzCQ5dxFUzBh6AMBqsRJtM3KfciOTCEQS3EVQaexEHeXJjUwikElwF0HFrJw7lPWYkRuZRCCS4C6CillpGShr/cuNTCIQSXAXQcXMlrv7GBLcRSCS4C6ChtbatN4yIGkZEdgkuIugUWgvxK7tgEk5dxnTXQQwCe4iaFQYEdKM3jLunLt0hRQBSIK7CBrlg7spaRlXy126QopAJMFdBA13TxkwN+cuLXcRiCS4i6DhbmFHWCOwWWyNPp47b59bkovD6Wj08YRoShLcRdAwsxsklLXcoeLcrEIEAgnuImiYOfQAVAzu0mNGBBoJ7iJoZBZlApAQlmDK8ZpqZEghfEGCuwgamcWu4B5uTnCPsEZgtRijYsuNTCLQSHAXQcPdco8PizfleEopuZFJBCwJ7iJouIN7i/AWph1TbmQSgUqCuwgaZqdlQG5kEoFLgrsIGp4LqmYGd7mRSQQoCe4iKDicDk9e3KzeMiDD/orAJcFdBIXskmw0GvBNy116y4hAI8FdBAV3SgZ8c0FVcu4i0EhwF0HhVNEpz+/l7yxtLEnLiEAlwV0EhaziLMAYDdKMQcPcJC0jApUEdxEUfNHHHSrOxqS1NvXYQviSBHcRFNxpGTN7ykBZzr3EWUKRo8jUYwvhSxLcRVDwDD0Qbs7QA27uljvIRVURWCS4i6DgvjvV9LRM+WF/5UYmEUAkuIugYPZwv27lp+uTHjMikEhwF0HBF0MPAFgtVqJt0YCkZURgqTO4K6UuVUotU0r9oJQqUEodUUq9o5Tq1RQFFMIbvgru5Y+ZUZRh+rGF8BVvWu43A52AJcBo4E7X82+VUgN9WDYhvKK1LhsR0uS0DECriFYAnCw8afqxhfAVqxfb/FFrfaL8AqXUOuAAMAe42hcFE8Jb+aX5lDpLAfMvqAIkRiQCEtxFYKmz5V45sLuWZQE/AR18USgh6qP8uDK+SMu0jGgJSHAXgcWblnsVSqlWQE/gzRrWZ9VxCPMG/xCnvVPFZePKNGSKPYdTs+PXLL748TfSsgvLjhUZyqCzWpIQJi13EXjqHdyVUgp4EaPV/7COKOkAAB6sSURBVKTpJRKinrKKjLZEeEg4kbZIr/c7mlXIM5/+xNo96WQVlFa7zYtf7CeixXGsbSAtr8qXWCGarYa03J8AxgOztNZ7q9tAa11r88nVspfWuzCFZ+gBL1MyuUWlPL/hF1756gDFdqdn+ZmtouiZFIdFKbTWHMgoYNeRLEqKo7ACvxWc5I4V25lzeTfax0f4oipCmKZewV0p9VfgLuB2rfUyn5RIiHpy95TxJiWz+cAp/vjGNn7LLQagdUwYNw89k5E92tCxRdVW/6n8ElbsjOL5n5ahLA5Sd/3Mh9+n89D4nlyT0tHcighhIq+Du1JqEXAfcI/W+hnfFUmI+vFmREitNa9/fYiF7+3B7tRE2EK4aegZ3Dj4DKLCav5n0CIqlMl9zuX5n4zniXHFZGRGcs/qXew+ms0DY3tgC5F7AUXz41VwV0o9CMwD5mmtn/BtkYSon7puYCp1OHkg9XtWbvkVgK5tYnhxxgV0Tozy6vgJ4QkoFBrNE1O68PqGUD7bd4JXNx1ib3ouL0y/gISoUHMqI4RJvLlD9S5gAfA+8KlSamC5R19fF1CIunhuYKomuNsdTmav2OEJ7GN6teWdWy/yOrCDMQSB+1tBgTOTl2ek8KdLzgKMNM+0l78hq6CksdUQwlTefJ8c5/o5FthU6ZHqo3IJ4bWaBg1zODV3vrWTD75LA+C24Wfx3LXn15qGqYm7r3tGYQYWi+KuUV1Z+ru+hFgUe9JyuO6VzWQXVt/jRgh/8OYmpmFaa1XDI7kJyihErarrLeNwauas2sl/dh4DjMB+16hzMHry1l91NzKNO689z0w1Avx3R7OZ8a/N5BRJgBfNg1wJEgHPPX9q+eD+2Mf7eGf7UQBuHnpmowI7lAX33wp/q7D8it7tWHzNeVgU7Pw1iz8u34bd4azuEEI0KQnuIqCVOErIL80HynrLrPz2MC9+sR+A6y/szNzLuzYqsEPtQxBc1SeJR6/uDcCXP51k4Xt7GnUuIcwgwV0ENHdKBox+7l/vz+CBNd8DMLxrK+aPO7fRgR0q5tyrc01KR24ddiYAr319iFf/d7DR5xSiMSS4i4BWftCwgoJwbn59K6UOzTltonnGdcHTDDWlZcq7e1RXLju3DQAL39vNFz/WvK0QvibBXQQ0dzfIEBXCPat/JKuglBZRobxyfT9iwm2mnccd3LOLsylxVN/t0WJRLJnSh3Pbx+LUcPuK7RzLKqx2WyF8TYK7CGjulruVaHYfzcOi4Nlr+1Y7lEBjuIM7VEwFVRYZauXFGSnER9rILCjlT29up1QusAo/kOAuApo7uBcUhgNw58hzuOjMlrXt0iDlg/tvBbWnW5LiI1h8zXkAbD2UyRNrfzC9PELURYK7CGg/n0oHQDuiGHpOK24ddpZPzhNliyLCaowE6c247pd0a8MtrgusL36xn0/2HPdJuYSoiQR3EbCK7Q4+2mt0OwxXiSyZ0geLSRdQK1NKkRjumrSjyLtJO+4aeQ79uxjdM+es3kl6dpFPyiZEdSS4i4D15NofyLUbE2iM6XYuLXw8eJenr3uBd8HdGmLhmal9iY+0kVVQyl2rduB0al8WUQgPCe4iIH3100le+vIAymZc3Ozf0TfpmPJaRbYC6jfdXtu4cB5z3eC08ecMXvpyv0/KJkRlEtxFwDmVX8Kdb+0AVYrFlgtA++j2Pj+vJy1Tz7lULzu3Lb/r3wmAJ9f9wPdHs00vmxCVSXAXAUVrzV/e2cWJ3GKio3I9yztEd/D5uWsbgqAu88Z254xWUZQ6NH9esZ3CEofZxROiAgnuIqCs2nqEtbuNnifTL44BwKqstI5s7fNzNyQt4xYZauWZqX2xhSj2/5bPIx9VO/2wEKaR4C4CxuGMAhb+ZzdgTLrRpa0xD2rbqLaEWEJ8fv7yLXet639htGdSHLNHnAPAvzcdYsMPJ0wtnxDlSXAXAcGYeGMH+SUOWseE8dfxvTiabwzpmxST1CRlSIwwcu4lzhJySnIadIybh55Jv2RjaOJ7Vu8iM19mcBK+IcFdBIR/fv4LWw4Zd6M+Mfk8EqJCOZZnTMSRFN00wb1VRCvP7zWNDlmXEIti8TV9iA6zciK3mPtSv2vQtwAh6iLBXTR7u45kseSTHwFjfPah5xhB9miuq+XeRMHdPVE2NCzv7taxRSQPjusBwEffp7N66xFTyidEeRLcRbNWUGJn9ood2J2as1pHc+/o7p51x/KNlntTdIMEsFlsntmeahv61xuTLujA6J5tAVjwn90czihodPmEKE+Cu2jW/vbhXvafzMcWovj7lD5EhBoXTgtKCzyjMzZFN0i3NpHGeO1H84426jhKKf42oRetY8LIL3Fwx1s7ZHo+YSoJ7qLZ+mzfcV7/+jAAd47sSs+kOM86d74dmq7lDtAlrgsA+7Mbf6dpQlQoT04uGz3yHxt+afQxhXCT4C6apRM5RcxZtQuA/l1a8IchZ1RY7245h1pCKwzH62tnxhsjPe7PMmcYgSHntGLWoGQAnv7vT2w9lFn7DkJ4SYK7aHacTs2db+0kI7+E2HArS6b0qTJdnju4t49uj0U13Z/xGXHGh8yB7AM4tTlplLmXd6Nb2xgcTs2f39xOdmGpKccVpzcJ7qLZeeGL/Xz1s9Eb5bGre5MUH1FlG3dwb6qeMm5nxBvBvchRRFp+minHDLeFsPR3fQm3WTiaVch970j3SNF4EtxFs7L9cCZPrTNmLrp2QCdG92pX7XbunHtT5tsBOsZ0xGqxAvBLlnk58rPbxDB/7LkAfPBdGm9t+dW0Y4vTkwR30WxkFZTwpze3Y3dqzmkTzbwretS4rb9a7jaLjc4xnQHz8u5uv+vf0dM98sH/7GZvWsPughUCJLiLZsLp1NyxcgdHMgsJt1lY+rvzPd0eq+Ov4A5lqRkzesyUp5Ti0Ym96ZAQQVGpk1uXbyOnSPLvomEkuItm4bn1P7P+B+PGoL9N6EXXtjE1bptbkusZ28Ufwd3dY+aXbPO7LsZF2nh+2gWEhlg4cDKfe1btkvy7aBAJ7sLvvvrpJIs/NYYXmDagExPPr/2mJH/1cXdz95jZn7XfJ4G3V4c4Fl5l5N8/3p3Oy18eMP0cIvhJcBd+dSgjnz+9uQ2toXeHOOaPqznP7nYkzxiLJcIaQYvwFr4uYhXu4J5XmtfoYQhqMrVfR652fcg9+vE+vvzJN+cRwUuCu/CbnKJSbnh1C5kFpbSICuW5a88nzFr3uOzlR4NUStWxtfmS45I9fevN7DFTnlKKh8f35Nz2sTicmluXb+PnE3k+OZcIThLchV/YHU5ue2M7P5/IIzTEwgvXXUDHFpFe7Xs4xxiSwB8pGYCwkDDPeDZmX1QtLyI0hJevT6FVTBi5RXZuePVbGf9deE2Cu2hyWmseen8PX/zouoA6sRf9kr1Pr+z4bQcAXRO6+qR83vD0mDG5O2Rl7eIieHlGCmFWC4cyCrj59a0U22X+VVE3Ce6iyT372c+8uukQYMxMNOkC70d1zCnJ4YdTxk1OKW1TfFI+b5wZ57seM5Wd1zGep64xBhj75sApbn9TRpAUdZPgLprUvzcd5CnXxBvjzmvPPZfVr/W9/fh2NBqrstKnVR8flNA7TdVydxvbuz1/Gd0NMHrQyAxOoi4S3EWTeXfHUea/a0xwPaxrK56afB4WS/0uiG49vhWAHok9iLR5l6P3BXfLPbM40zOuvK/dNPRMbh5qnPetLUf424d7JcCLGklwF03inW1HuGOlkStP6Zxg3Khjrf+f35bjWwC4oO0FppavvtzjukPTtd4B5l7eld/17wjAS18ekAAvaiTBXfjc618f4s63duLU0Cspjldm9qt1aIGaFJQWsCdjDwApbfyXbweItEXSLsoY1MxX3SGrY3SR7MVVfYyeQi99eYAH1nyP0ykBXlQkwV34jNaaFz7/hQfWfA9Av+QElt84gLgIW4OOt+PEDhzagUVZ6Nu6r5lFbZAeicYNVxuPbWzS84ZYFIuv6cOUFKMFv/ybw9y1aielcpFVlCPBXfhEid3Jfanf8chH+wAYfHZLXv19f2LDGxbYoSwl0zWhKzGhNY8901RGdB4BwFdHvyK3JLdJzx1iUTx6dS/PLE6p248y45XN0g9eeEhwF6bLyCtm+ivf8OZmY0zyK3q14+XrU4gMtTbquO6LqRe08W++3W14x+GEhYRR6ixlw68bmvz8Sinmj+3B7BFnA7BpfwZXPbeRH4837QeNaJ4kuAtTfXvwFFc+u5HNB4weJLNHnM3S3/X1aliB2hTZi/ju5HeAf/u3lxdli2Jw0mAAPj74sV/KoJRi9ohzePZaYyanw6cKmPiP/5G6/YhcaD3NSXAXpiixO3li7T6mvLCJo1mFRNhCeH7a+cwecU69uztW57uT31HqNMY2P7/1+Y0+nlku63IZAP879j+yi7P9Vo6xvduz6qaLaBsbTl6xnTtW7uRPb24nu0DGgz9dSXAXjbb9cCYT/rGR59b/glNDj3ax/Oe2QTVOkdcQW9KNfPtZ8WeREJ5g2nEba0jSECKsEdiddj47/Jlfy9KrQxzv//liRnRvA8D7u9K47O9f8NF3adKKPw1JcBcNdiKniDvf2sGEf/yP3cdyUApuGXYma/44iLPbmHfBs6C0gNU/rgZgQLsBph3XDJG2SIZ0GALA2oNr/VwaaBkdxkszLuDRib2IDA0hPaeIW5Zv49qXvmFfukzbdzqR4C7q7UROEY98uJdhT27gnW3GdHfnto9l9c0XMvfybg26Oak2//r+X5woPEFYSBgzesww9dhmuDz5cgC+TvuazKJMP5fGyMNP7d+Jj24fzKXdWgPGxdYxT3/JHSt38JNccD0tNK77gjit7EvP4fWvD/HWliOU2I0+1S2iQplzWVeuSelIiAm59crS8tJYtnsZANefe73fhvmtzcVJFxNpjaTAXsD7+9/nuh7X+btIAHROjOKVmf1Y/8MJHnpvD/tP5pO6/Sip249y+bltmXFRZwZ2STTlmohofpQ3uTilVDTwN2AyEA/sBhZprf/ToJMqlRUXFxeXlZXVkN1FEzqRW8Ta3cdZteVXdh0pu2DYIiqUGy7uwvSBnRt8U5I35n4xlw8PfEiriFa8P+F9348nk5kJq1dDejq0bQuTJkFC3Tn++Rvnk/pzKjaLjVcue6VZ3GRVXondyZrtR3n+8184cDLfs7xTi0gmX9CBsee1p0vLKD+WUHgjPj6e7OzsbK11fF3behvcPwHOB+4BDgAzgWnAOK31h/UtoAT35qvY7uD7o9ls+iWDT/eeYMevFd+jM1pGMX1gZ6b272j0W//q75B0PnQZUv0BD3wBR7fBxbPrXZYdn/6F646+D8BDrQYzvvtU4zzucwK8fydcMBPa9S47T/lz/u9Z2L8Bpq+u/WRaw/z58OSTEBICBQUQGQkOB9x9N4xqAR0uqLGe2T9+zPQtD3OwNJsEZWN5ygN07DGx+tfju7ehRZfaXxMfva4Op+bD79L4v40H2Ha40nvbKoqR3dtw0VktuaBzAtFh8sW+uTE1uCulxgAfABO11qmuZQr4EkjUWnevbwEluDcPuUWlHDiZz770XPal5fL9sWx2/ppFsb3ibezRYVYu79mWKf06ktI5oeLUdge+gFUzYfKyqoGotnW1cDgdrPhhBc9sXUKBo5ju0R1Z0fceLKt/bxwLYMU042evybDlFbBFwrUrjWXuc6btgnUPwKiH4aLbaj/pvHmweLER1CuLjITfXw0dv6q1nr+OfYJrtz9Blj2fLqUO/jX4cVp2HVtxO3e5py6v/TXxweta2U/Hc1m19Qhrth/lRG5xhXUWBT3ax9K7Qzzd28bQrV0sZ7SMokVUqF+mNhQGs4P7SxjpmBZaa2e55TcCLwLnaq331KeAEtzNp7Wm2O6ksMRBXrGdvGI7OYWlZBWWklVQQkZ+CSdyijmRW8SxrCIOnyrgVC23qndpGcXQc1oxonsb+ndpUftF0uqCTT0DkMPp4FDuIfZl7OO1Pa/xfYYxHk0LWwzPp5+gx4R/GRuumgkX3wmfP2Y8HzoX1v8VSgsg5QbYs6b+gT0zE9q3h6KimrcJD4evV8PaP9Vaz63Ht3Lj2v9HqbZj05oRrVOY0OcmeufnErX6BmOfugK7mwmvqzecTs13R7P5dO9xPtt3gr1pOdQ0DllMmJWOLSJJSoigdUwYbWLDSYwOJSEylPhIG7HhNqLDrESHW4kKtRJmtUhO30RmB/dNgNZaX1Rp+QDga2CK1vqtSuvqitpxcXFxNCS4X/f2QxzI3Vvv/erLJ72Cdc1PjbdBV1nmWoxGu567fmpwao3T87PhJQ4NsRAdZiUqzEpchI24CFv9e7wUnoK0ndDuPKNPdfouaNsbIltUqJXWGod2oLWm1FlKfmk+BaUFZBRlUGgvrHDIq8++mjsuuIO4Yzurb41D2e+n9hst+JQboMUZ3gd2gJdegjvugPz8mreJioIlS2BE17KyQLWBdu3BtSz46gHyHBU/LKKdmtbR7YiMaEloSCi2EBsWLCiljAfVBMGCU6j0XdDOmInJ/RoT4f20hPVld2pyCkvJLiw1GgpFdooaMbWfUooQBRZ3PZXxzUBh/K5QuP6j/JcC5fp/1WXUssAcvv44Cg+J5tPrXqz3fvUJ7t4k1RKBH6tZfqrc+iZzIHcv2eq7pjyleXz0F2OhcX1anUAOkFMKaaWuJw0RZoVTu8t+z9wD9ewZGGWLomdiT27pc0vZGDJdhhgB9NVxxvNRf4V191f9PeUGI8C7l3sT2MG4eFpdOqa8ggJjuy43VizL9e9VaUFflnwZg5MG88mWZ3ln10tsCw8HIM+iyCtIh4J078rlVvl1df/eVMLN6VYnY1aWyS71/cB33r5ntTULq6yr61PF1bKP8/LcFVzcfji/ZCU3ZNd6a1Qs9mJn5flZ1nIBXK04YwOlwOJu4SiFxdUCsihFiMX43RqiCFEWrCEKq0URarVgCzEevuieWKPsX+H7VKMOPSdCXMcqlVUoQlQISimsFitR1iiibFHEh8VzTsI5JMUkYVFNfPtF27ZGXr22lntkpLGdlyJtkVzVdiBXrf0rJy0W0qxWjo+cx/HoRIrsRZQ4Syh1lOLUTte3ser/iWl0hdeVnhMqvq7NiFNrSh1OShyaUruTUocTh1Njd2ocTicOp7GNw2l849Sub5zub6i60u9Q8Zur53ldGvm1uynu5Y20+r5nkk/SMnWeVHLuwad8LhjMzQuXP7Yv0jLe5tzT0iBzl3f1LH/xdOjcsmsE3ubbyx/HV6+rCDj1Sct400TaDXRXqkpzqpfr5/f1LaAIMpUv8rnTKKtmGuvMOjbAV4uNoP35Y8Zj1MPGBVV3YN+zxugWOephI8D/79m6z5GQYHR3jKyhD31kpLG+fGCvrZ6Ve8VcdJvxE4zl3r4mvnxdRdDzJrinYty4NK7S8hnAD/XtKSOCTE29N8wIRDW1Wtv1Ltvm1H6jp4wtEs4dX3bO+gb4RYvgzjuNFnpUlJEPi4oynt95J8wa4V09a+ru2GVI/QK8L19XcVrwJi2jgP8CvSm7iel6jOB+ldb6vXqfVNIywcOHNzFVOHZ1v4N5NzG5Vb5DdfJkiI/3vp4AmQeg59XVb+vnm5hEYPPFHaqxGMMPTMJoxe/BGH5gTUMKKMFdCCHqz+yukGitc4DbXA8hhBDNnAz5K4QQQcirtIzpJ1XKCai4uAZ1dRdCiNNSdnY2GF3T62yY+yu42zG+NeRQdjOT/yag9J/Tue5wetdf6n561h0aV/9YwKm1rjOl7pfgXqEArnFovLlAEGxO57rD6V1/qfvpWXdouvpLzl0IIYKQBHchhAhCEtyFECIISXAXQoggJMFdCCGCkAR3IYQIQhLchRAiCPm9n7sQQgjzSctdCCGCkAR3IYQIQhLchRAiCPksuCul+iql1iiljiml8pVSe5RS9yqlwurYb4FSSlfzSPdVWc2mlBqklPrMVe8cpdSHSqlede/p2f8CpdR/XftnKqVWKKWSfFlmszSm7kqpZTW891/7utz1pZTqoJR6Win1lVIqz1XOYTVse61SaqdSqkgpdUQp9ahSKtzL89iUUguVUoeUUsVKqd1KqRtMrUwDNEX9lVLJNfw9aKXU5aZXykve1l0pdYdS6l2l1K+ubZbV8zzRSqlnlFJpSqlCpdQWpdSV3u7vk+CulOoG/A9IBmZjzL/6DvBX4CUvDzMSuLDcY4zpBfUBpdRAYD3GRCjTgJlAS+ALpdRZXuzfHdgAKIyZr24E+gIblFLRvim1ORpbd5c8Kr7vFwJ+D2bVOAv4HUZ5/1vTRkqp6cByYCMwGmNGsz8Cy7w8z/PAHODvwGXAR8DLSqmbG1pwkzRV/cGoe+W/iU0NKbRJvKo7cBPQHvgQKGrAeVIx/h09AFyBMQNeqlLKu1iotTb9ASwANHBmpeWvAaWAzYt9431RNl8/gHXAMSCi3LJ44BSw3Iv933LtH1VuWTfAAcz1d/18XPdlQJa/6+FlXS3lfh/v+psdVmmbECANeLfS8htd2w+o4xznura7o9Ly5a7XNDzI65/s2m62v9/v+ta9mu2ygGX1OMcY13EnlFumgK+Avd4cw1dpmVLXz8rjFWe71jl8dN7m4ELgM611oXuB1joL+BIYr5QKqWlHpZQNGAus1lrnl9t/H/A1cLXPSm2OBtc90GitnV5sNhBoC7xaaflyjH8Hdb2f7sDxWqXly4AE4BIvyuATTVT/ZsnLunu9XQ0mYMTLd8sdT2O8lt2UUj3qOoCvgvtrGC2L55VSXZRSsUqpq4Drgae8rPRepZTDlW96SSnV2kdlNVsoUFzN8mIgEjijln3PACKA76tZtwvo2ejS+VZj6u4WrZQ67nrvDymlnmru6ahauN+vCu+n1roA+IW638+eQLrW+mSl5bsqHb+5amz93e5XSpW4ruOsV0pdamYhm6mewJ5qYqXX771XE2TXl9b6sCv/ugbYX27V37TW8+rY/RfgPmA7UAIMAu4BLlVKXaC1zvRFmU20BxiolFLa/V3KaJH3d61vCfxUw76Jrp+nqll3CohQSkWUbxk3M42pO8BOYAdGMAjBuO7yJ2CwUmqQ1rq0ln2bo7rez8Rqllfev6Z9yx+/uWps/YsxrtGtA9KBLsBdwCdKqau11qlmFbQZSgR+rGa51++9T4K7Uqoz8B7GGzIBI980FPiLUspZW4DXWlf+CvqZq7fEOowLMQ/7oswmWgq8AjyjlHoU49vRIqCDa70331pqu224Od9S3Ki6a62XVFq0Vin1A/AiMAV43dziNpma3jNv3svqttG1rGuOGlR/rXUa8Idyi75SSr2N0QB4AuOCYzBrVBzwVVrmUSAGGK21XqO13qC1Xgg8AtynlEquz8G01p9gXJi50OyCmk1r/S/gXoyeIkeAw0BX4EnXJsdq2T3D9bO6T+UWQKHWuiFX3ZtEI+tek9cxPhSa/Xtfjbrez+patJX3r27f2lrEzUlj61+FK6WzGjhTKdWqEWVr7mp671u4ftb52vkquPfFyBdVTh9scZ2zWwOOacG7Vq/faa0fw0hB9AKStdYXYbwph7TWv9ay636gkOrzab2oPhffrDSi7jVRrp8B8d5Xstv1s8L7qZSKBM6k7vdzN9BWKVX5H7n7voHm/vfQ2PrXxB23AvFvwlu7ge5Kqcox2uv33lfB/RjQ0/UmludufR2tz8GUUqOANhg9RgKC1rpYa/291vqQ65vKFODZOvYpBT4Ari7/2imlzsF47d7xXYnN05C612I6xt9pwLz35XyNkZq8rtLy3wE26n4/12B8uE2vtPx6jFTnehPK6EuNrX8Vrn8XVwM/a60z6to+gKVidCMeV2n5DOAHrfWeOo/go36g7i5cX2K8ESMwcuUlwCflttuAq4dPuWXbgTsw+nmOBB4EcjEuxDX7vu/Aea4yX+Gq990YX7E+AayVtj0IHKy0rAfGzRGfApe7Xr99GBeaY/xdP1/VHegMfAHcAozCuOHlKYyLav+rvH9zeGDcZDYJeMz19/6g6/nocttc71r3LDDMVb8cYFWlY810bTez0vL/AwowbgYcipFr1sAfg73+rvd/CTDZte9MjIvuDmBcANQ9pdx2+Rgfxu7nrcptt4BKfeUxPtQ/A04CvweGY3SBdXpbd19WfoQrQB13VWw3MI+KN+dsoGpwfxMjkOdjfBj84nqDW/j7j9nLendzBalTrsC0F/gLEFbNtgepFNxdy/u53th8jBbaW0BHf9fNl3XH6Lf9jmt5IcYdfXuAhZS7Kao5PVz/IKt7HKy03XTgO9drchR4vHKdqgturuWhwEMY1y/cr+mN/q57U9TfFdS+cf09lboC3XvAoECoO0Ywrmm7YeW2W1B5mWt5LMaHYrrr38M2YLy3ZZTx3IUQIgjJqJBCCBGEJLgLIUQQkuAuhBBBSIK7EEIEIQnuQggRhCS4CyFEEJLgLoQQQUiCuxBCBCEJ7kIIEYT+P/jAB7KJpUs5AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Let's draw this\n",
    "G_post = st.norm(gn, sigman)\n",
    "fig, ax = plt.subplots()\n",
    "ggs = np.linspace(g0 - 6.0 * s0, g0 + 6.0 * s0, 100)\n",
    "ax.plot(ggs, G_prior.pdf(ggs), label='prior')\n",
    "ax.plot(gs, np.zeros(gs.shape), 'x', label='data')\n",
    "ax.plot(ggs, G_post.pdf(ggs), label='posterior')\n",
    "ax.plot([g_true], [0.0], 'ro', label='True $g$')\n",
    "plt.legend(loc='best');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g is in [9.63, 9.86] with 95% probability\n"
     ]
    }
   ],
   "source": [
    "# Let's get a credible interval:\n",
    "g_025 = G_post.ppf(0.025)\n",
    "g_975 = G_post.ppf(0.975)\n",
    "print('g is in [{0:1.2f}, {1:1.2f}] with 95% probability'.format(g_025, g_975))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Questions\n",
    "\n",
    "+ Use Bayesian decision making to compute point estimates for $g$.\n",
    "+ Experiment with the a very wrong prior knowledge, say $g_0 = 5$. Try at least a case where you are wrong but not very sure $s_0 = 1.0$ and a case where you are wrong and very sure $s_0 = 0.01$.\n",
    "In both cases, increase $N$ until you get close enough to the true value of $g$."
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  },
  "latex_envs": {
   "bibliofile": "biblio.bib",
   "cite_by": "apalike",
   "current_citInitial": 1,
   "eqLabelWithNumbers": true,
   "eqNumInitial": 0
  },
  "widgets": {
   "state": {
    "968a18c908c6495081a9936faebe0473": {
     "views": [
      {
       "cell_index": 11
      }
     ]
    }
   },
   "version": "1.2.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
